typescript(ts) 声明文件

什么是声明文件

在typescript中存在两种文件后缀名,一种是 .ts,另一种是.d.ts结尾的文件,我们主要的代码都是写在以.ts文件结尾的文件中。而.d.ts结尾的文件就是声明文件。

声明文件的作用

我们都知道,ts 是 js 的超集,ts 是一个静态的类型检查系统,ts 比 js 多的就是类型检查,而实现类型检查的关键就是 ts 中的声明文件。所以声明文件的作用是为js 提供类型检查而存在的。

声明文件存放的位置

  • 放置到tsconfig.json配置中include:[]中包含的目录中

在这里插入图片描述

  • 放置到node_modules/@types文件夹中

我们在node 中搭建ts的环境中,就需要安装 @types/node 这个声明文件。
在这里插入图片描述

  • 手动配置

tsconfig.json中使用配置 typeRoots:[]里面配置,这里手动配置了就会失效 node_modulesinclude里面配置的。
在这里插入图片描述

  • 与JS代码所在目录相同,并且文件名也相同的文件。用ts代码书写的工程发布之后的格式。

编写的ts 代码可以自动生成三个文件,js 文件 , .d.ts 文件, 和 .js.map 文件 ,但是后面两者都需要手动在 tsconfig.json中进行手动配置,生成编译生成js文件不需要配置的话会在当前ts 的目录下面生成js 文件,如果想向vue 打包生成outdir:'目录名称',生成.d.ts配置:"declaration": true,生成js.map需要配置:"sourceMap": true,
在这里插入图片描述
在这里插入图片描述

编写声明文件

声明文件的编写有两种方式,手动编写 自动生成,
所有的声明文件都是给ts 认识的,改文件不参与函数的运行

自动生成

对于我们写的代码是ts 的代码,可以自动生成。
方法
工程是使用ts开发的,发布(编译)之后,是js文件,发布的是js文件。

如果发布的文件,需要其他开发者使用,可以使用声明文件,来描述发布结果中的类型。

配置tsconfig.json中的declaration:true即可

手动编写

全局声明:声明的文件放入的名字叫做gloab.d.ts上,不然会报错

配置如下
在这里插入图片描述

declare var 声明全局变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

declare function 声明全局方法

在这里插入图片描述
在这里插入图片描述

declare class 声明全局类

在这里插入图片描述
在这里插入图片描述

declare enum 声明全局枚举类型

在这里插入图片描述
在这里插入图片描述

declare namespace 声明全局对象(含有子属性)

namespace表示命名空间,可以将其认为是一个对象,命名空间中的内容,必须通过命名空间.成员名访问
在这里插入图片描述
在这里插入图片描述

interface 和 type 声明全局类型

这里不能使用 declare来进行声明,和 ts 里面的是一样的,

所有声明文件都是给ts 来约束的,不会参与实际的代码运行。

发布包

还是两种包,一种是ts 开发的,另一种是给js开发声明文件

当前工程使用ts开发

编译完成后,将编译结果所在文件夹直接发布到npm上即可,手动开启那两个配置就好

为其他第三方库开发的声明文件

发布到@types/**中。

1) 进入github的开源项目:https://github.com/DefinitelyTyped/DefinitelyTyped

2) fork到自己的开源库中

3) 从自己的开源库中克隆到本地

4) 本地新建分支,在新分支中进行声明文件的开发

在types目录中新建文件夹,在新的文件夹中开发声明文件

5) push分支到你的开源库

6) 到官方的开源库中,提交pull request

7) 等待官方管理员审核(1天)

审核通过之后,会将你的分支代码合并到主分支,然后发布到npm。

之后,就可以通过命令npm install @types/你发布的库名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

twinkle||cll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值