场景
- 自己编写一个模块时,为了方便别人使用,最好支持typescript
- 当使用一些老旧的模块时,如果第三方库本身没有typscript声明文件,导致不能在ts项目中使用
近些年的npm包都会自带类型声明文件。有些年头的npm包在
npm install
时没有自带类型声明文件,
可以查找@types/包名
,例如@types/lodash.如果还没有,那么就要自己编写一个类型声明文件,才
能在支持ts的项目中使用。
编写类型声明文件*.d.ts
typscript官方文档 里介绍的很全面,这里记录下接触过的部分。
一、新建类型声明文件
如果库的入口文件是index.js
则要在同级目录新建index.d.ts
文件。如果入口是其他文件名,则需要在package.json
文件中增加说明字段"types": "./lib/名字.d.ts"
二、编写类型声明代码
- 首先判断库的结构。不同结构的库对应的类型声明方式也会有差别。例如
// index.js 简单的工具库举例
function func1(a){}
function func2(b){}
const mylib = {func1, func2}
module.exports = mylib
// index.d.ts 对应的类型声明文件
export = mylib;
export as namespace mylib;
declare namespace mylib {
function func1(a: string){}
function func2(b: number){}
}
其他还有很多种结构的库,对应的类型声明文件的写法可以去官网找模板。
补充:发布npm包的流程
- 在
npm init
初始化过的项目中,写完代码 - 在npm的网站https://www.npmjs.com/注册用户
npm login
使用注册好的用户登录。- 除了需要账号密码,还需要使用邮箱接收一个一次性密码用于登录
- 配置的npm镜像源要指向官方源,因为淘宝的镜像源只读。
npm publish
发布到npm中心仓库。成功后,可以在自己的npm主页看到发布的包。大约10分钟后,国内淘宝镜像可以提供下载。- 更新版本时,在执行
npm publish
之前,要先把package.json
中的version
版本号改大,否则会失败