【零基础入门TypeScript】环境

server/2024/9/23 3:21:40/

目录

定义环境

句法

例子



环境声明是告诉 TypeScript 编译器实际源代码存在于其他地方的一种方式。当您使用大量第三方js库(如 jquery/angularjs/nodejs)时,您无法在 TypeScript 中重写它。对于 TypeScript 程序员来说,在使用这些库时确保类型安全和智能感知将是一个挑战。环境声明有助于将其他js库无缝集成到 TypeScript 中。

定义环境

按照惯例,环境声明保存在具有以下扩展名 (d.ts) 的类型声明文件中

Sample.d.ts

上面的文件不会被转编译为 JavaScript。它将用于类型安全和智能感知。

声明环境变量或模块的语法如下 -

句法

declare module Module_Name {
}

环境文件应在客户端 TypeScript 文件中引用,如下所示 -

/// <reference path = " Sample.d.ts" />

例子

让我们通过一个例子来理解这一点。假设您获得了一个第三方 javascript 库,其中包含与此类似的代码。


FileName: CalcThirdPartyJsLib.js 
var TutorialPoint;  
(function (TutorialPoint) {  var Calc = (function () { function Calc() { } Calc.prototype.doSum = function (limit) {var sum = 0; for (var i = 0; i <= limit; i++) { Calc.prototype.doSum = function (limit) {var sum = 0; for (var i = 0; i <= limit; i++) { sum = sum + i; return sum; return Calc; TutorialPoint.Calc = Calc; })(TutorialPoint || (TutorialPoint = {})); var test = new TutorialPoint.Calc();}}}}
}   

作为打字稿程序员,您将没有时间将此库重写为打字稿。但您仍然需要使用类型安全的 doSum() 方法。您可以做的是环境声明文件。让我们创建一个环境声明文件 Calc.d.ts


FileName: Calc.d.ts 
declare module TutorialPoint { export class Calc { doSum(limit:number) : number; }
}

环境文件将不包含实现,它只是类型声明。现在需要将声明包含在打字稿文件中,如下所示。


FileName : CalcTest.ts  
/// <reference path = "Calc.d.ts" /> 
var obj = new TutorialPoint.Calc(); 
obj.doSum("Hello"); // compiler error 
console.log(obj.doSum(10));

以下代码行将显示编译器错误。这是因为在声明文件中我们指定输入参数将为数字。


obj.doSum("Hello");

注释上面的行并使用以下语法编译程序 -

tsc CalcTest.ts

编译时,它将生成以下 JavaScript 代码(CalcTest.js)。


//Generated by typescript 1.8.10
/// <reference path = "Calc.d.ts" />
var obj = new TutorialPoint.Calc();// obj.doSum("Hello");
console.log(obj.doSum(10));

为了执行代码,我们添加一个带有脚本标签的 html 页面,如下所示。添加编译好的CalcTest.js文件和第三方库文件CalcThirdPartyJsLib.js。

<html> <body style = "font-size:30px;"> <h1>Ambient Test</h1> <h2>Calc Test</h2> </body> <script src = "CalcThirdPartyJsLib.js"></script> <script src = "CalcTest.js"></script> 
</html>

它将显示以下页面 -

环境声明

在控制台上,您可以看到以下输出 -

55

同样,您可以根据您的要求将 jquery.d.ts 或 angular.d.ts 集成到项目中。


http://www.ppmy.cn/server/13953.html

相关文章

中国航天日特辑 | PARASOFT——从NASA JPL到航空航天的星辰大海

4月24日&#xff0c;是中国航天日&#xff08;Space Day of China&#xff09;&#xff0c;一个庆祝和纪念中国航天事业成就的特殊时刻。在这一天&#xff0c;我们不仅仅是赞颂那些辉煌的航天成就&#xff0c;还要探讨那些为航天事业做出重大贡献的合作伙伴和技术解决方案提供者…

BUUCTF---misc---[SWPU2019]我有一只马里奥

1、下载附件是一个.exe文件 2、运行之后可以看到桌面生成了1.txt文件&#xff0c;文件里面有如下内容 3、经过信息搜索&#xff1a;NTFS&#xff08;New Technology File System&#xff09;是一种由Microsoft开发的专有日志文件系统。根据它的提示&#xff0c;应该是把flag.tx…

【七】jmeter5.5+influxdb2.0+prometheus+grafana

参考文章&#xff1a;https://blog.csdn.net/wenxingchen/article/details/126892890 https://blog.csdn.net/Zuo19960127/article/details/119726652 https://blog.csdn.net/shnu_cdk/article/details/132182858 promethus参考 由于自己下载的是infuldb2.0&#xff0c;所以按照…

Android 12 如何加载 native 原生库

在 Android 7.0 及更高版本中&#xff0c;系统库与应用库是分开的。 图1. 原生库的命名空间 原生库的命名空间可防止应用使用私有平台的原生 API&#xff08;例如使用 OpenSSL&#xff09;。该命名空间还可以避免应用意外使用平台库&#xff08;而非它们自己的库&#xff09;的…

JavaEE初阶之IO流快速顿悟一(超详细)

目录 题外话 正题 IO流 Java.io.FileInputStream int read() int read(byte[] b) 关于异常 Java7的新特性: try-with-resources ( 资源自动关闭) Java.io.FileOutputStream void write(int b) void write(byte[] b) 小结 题外话 十年青铜无人问,一朝顿悟冲王者 前天…

你们项目日志是如何处理的???

ELK日志采集系统 1.什么是ELK ELK 是一套流行的数据搜索、分析和可视化解决方案&#xff0c;由三个开源项目组成&#xff0c;每个项目的首字母合起来形成了“ELK”这一术语&#xff1a; Elasticsearch (ES): Elasticsearch 是一个基于 Apache Lucene 构建的分布式、实时搜索与…

RUST腐蚀服务器添加 TAGS标签教程

RUST腐蚀服务器添加 TAGS标签教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师。我们自己搭建架设的服务器在steam展示面板看到跟别人的不一样是咋回事&#xff1f; 这个其实就是服务器的一个标签&#xff0c;那么主要的作用就是让大家在选择服务器时更快更直接的…

docker初识

什么是docker dockers&#xff0c;翻译的意思是码头工人。 它是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化。容器完全使用沙盒机制&#xff0c;…