宝哥软件园

js绑定TypeScript声明文件教程

编辑:宝哥软件园 来源:互联网 时间:2021-08-31

TypeScript是JavaScript类型的超集,是TypeScript的文档引入的句子,那么它们之间有联系吗?

我的理解是TypeScript在JavaScript的基础上引入了强类型语言的特性。开发人员使用TypeScript语法进行编程开发,最后通过转换工具将TypeScript转换为JavaScript。

TypeScript可以避免在原生JavaScript上开发带来的弱类型语言的坑。(我应该输入什么?调用后返回什么?嘿,让我们看看源代码。)

嗯!非常好,强类型JavaScript,非常好。然而,我无法承受NPM中许多图书馆无微不至的人文关怀(t)

不要害怕,现在很多库已经悄悄支持TypeScript了。即使它不忍心支持它,也有无私的人默默帮助这些库支持TypeScript

这就是本文的主题,TypeScript的声明文件。我觉得是类似C语言的JavaScript库的头文件。它的存在是为了帮助TypeScript引入JavaScript库

什么是申报文件?

和C/C *很像。h头文件:引用第三方库时(。lib/。dll/。so/。a/la)在C/C程序中,C/C编译器无法自动识别库中的导出名称和函数类型签名,因此需要使用头文件进行接口声明。

同样,TypeScript的声明文件是一个带后缀的TypeScript代码文件。d.ts,但它的功能是描述一个JavaScript模块中所有导出接口的类型信息(广义)。

关于TypeScript声明文件的编写和规范,请参考以下官方文档和优秀的博客文章:

https://www . tslang.cn/docs/manual/declaration-files/introduction . html//www . JB 51 . net/article/138217 . htm根据官方文件,有两种绑定方式:

与您的npm包捆绑并在npm上发布的@types组织如上所述。开发人员可以在ts项目的npm中安装一个库,并将其导入到代码文件中。

当一些库没有正式维护时,可以使用第二种方法:npm安装库后,执行npm install @types/library name安装库的声明文件。原理是在TypeScript版本之后,当您导入一个库时,当他在配置的包含路径中没有找到指定的库时,他会在@types of node_modules中查找该库。

一般来说,官方推荐的第一种方式是写发布声明文件。让我用一个例子来展示第一种绑定方式。

例子

首先,初始化TypeScript项目。目录结构如下:

Tsconfig.json的配置如下:

{“compile options”: {“target”:“es5”,/*指定ECMAScript目标版本:“ES3”(默认)、“ES5”、“ES2015”、“ES2016”、“ES2017”或“ESNEXT”。*/'module': 'commonjs ',/*指定模块代码生成: 'none ',commonjs ',' amd ',' system ',' umd ',' es2015 '或' ESNext '。*/“allowJs”: true,“OutDir”:/dist ',/*将输出结构重定向到目录。*//*允许编译javascript文件。*/“严格”: true /*启用所有严格类型检查选项。*/},' include ' :[' src/* */*]}如您所见,我编写了一个模块a,并用声明文件将其绑定。模块a,即src/a/index.js的内容如下:

常量名称=' A让呼叫=(谁)={ console.log('Hello ' who '!我是‘名字’;}导出默认{call}其声明文件src/a/index.d.ts如下:

声明命名空间a {函数调用(who:字符串):无效;}导出默认值a;此时,我们可以在条目文件src/index.ts中引入一个模块:

从导入。/a ';a . call(' Pwcong ');在命令行上执行tsc后,可以在目录dist中生成js代码:

执行命令节点。/dist/index.js获取相应的正确输出。

我们模拟导入已发布的NPM库,在Node_modules目录下创建目录B,并初始化节点项目。目录结构如下:

其中node _ modules/b/type/package . JSON如下:

{“name”:“b”,“version”:“1 . 0 . 0”,“main”:/src/index.js ',' types ' 3360。/type/index . d . ts ' } node _ modules

const NAME=' B让呼叫=(谁)={ console.log('Hello ' who '!我是‘名字’;}module.exports={call}声明文件node _ modules/b/types/index . d . ts如下:

声明命名空间b {函数调用(who:字符串):无效;} export=b;此时,我们修改src/index.ts:

从导入。/a ';a . call(' Pwcong ');import b=require(' b ');b . call(' Pwcong ');在命令行上执行tsc后,可以在目录dist中生成js代码,然后是命令节点。可以执行/dist/index.js,得到相应的正确输出。

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

更多资讯
游戏推荐
更多+