找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 929|回复: 0

软件开发入门教程网站之TypeScript 声明文件

[复制链接]

1万

主题

0

回帖

3万

积分

论坛元老

积分
34372
发表于 2023-1-14 02:01:24 | 显示全部楼层 |阅读模式
TypeScript 声明文件



TypeScript 作为 JavaScript 的超集,在开辟进程中不成防止要援用其他第三方的 JavaScript 的库。固然经由过程直接援用可以挪用库的类和法子,可是却没法利用TypeScript 诸如类型查抄等特征功效。为领会决这个问题,必要将这些库里的函数和法子体去掉后只保存导出类型声明,而发生了一个描写 JavaScript 库和模块信息znxlqz.gq的声明文件。经由过程援用这个声明文件,便可以借用 TypeScript 的各类特征来利用库文件了。

假设咱们想利用第三方库,好比 jQuery,咱们凡是如许获得一个 id 是 foo 的元素:
araesp.gq
$('#foo');// 或jQuery('#foo');

可是在 TypeScript 中,咱们其实不晓得 $ 或 jQuery 是甚么工具:

jQuery('#foo');// index.ts(1,1): error TS2304: Cannot find name 'jQuery'.

这时候,咱们必要利用 declare 关头字来界说它的类型,帮忙 TypeScript 果断咱们传入的参数类型对不合错误:

declare var jQuery: (selector: string) => any;jQuery('#foo');

declare 界说的类型只会用于编译时的查抄,编译成果中会被删除。

上例的编译成果是:

jQuery('#foo');

声明文件

声明文件以 .d.ts 为后缀,比方:

kxdang.d.ts

声明文件或模块的语法格局以下:

declare module Mtovekh.gqoduleqstgem.gq_Name {}

TypeScript 引入声明文件语法格局:

固然,不少风行的第三方库的声明文件不必要咱们界说了,好hiapdf.gq比 jQuery 已有人帮咱们界说好了:jQuery in DefinitelyTyped。

实例

如下界说一个第三方库来演示:

CalcThirdPartyJsLib.js 文件代码:

var Runoob; (function(Runoob) { var Calc = (function () { function Calc() { } }) Calc.prototype.doSum = function (limit) { var sum = 0; for (var i = 0; i <= limit; i++) { sum = sum + i; } return sum; } Runoob.Calc = Calc; return Calc; })(Runoob || (Runoob = {})); var test = new Runoob.Calc();

若是咱们想在 TypeScript 中援用上面的代码,则必要设置声明文件 Calc.d.ts,代码以下:

Calc.d.ts 文件代码:

declare module Runoob { export class Calc { doSum(limit:number) : number; }}

声明文件不包括实现,它只是类型声明,把声明文件参加到 TypeScript 中:

CalcTest.ts 文件代码:

/// var obj = new Runoob.Calc(hhcjba.gq); // obj.doSum("Hello"); // 编译毛病console.log(obj.doSum(10));

下面这行致使编译毛病,由于咱们必要传入数字参数:

obj.doSum("Hello");

利用 tsc 号令来编译以上代码文件:

tsc CalcTest.ts

天生的 JavaScript 代码以下:

CalcTest.fdestv.gqjs 文件代码:

/// var obj = new Runoob.Calc();//obj.doSum("Hello"); // 编译毛病console.log(obj.doSum(10));

最后咱们编写一个 kxdang.html 文件,引入 CalcTest.js 文件登科三方库 CalcThirdPartyJsLib.js:

实例

html>菜鸟教程(mywtyt.gqkxdang.com)title>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX ( 黔ICP备2021006774号-1 )

GMT+8, 2025-11-12 06:54 , Processed in 0.050753 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表