声明是声明文件?
.d.ts这样的包含声明语句的文件就是声明文件。
包声明文件的自动生成
--declaration相关的参数用于控制库声明文件的自动生成,生成位置等信息
包声明文件的发布方式有两种
- 将声明文件和源码放在一起发布,并在
package.json中设置--types属性指向声明文件(这种模式不需要额外安装其他包,是最为推荐的)。 - 将声明文件发布到DefinitelyTyped。
第三方包声明文件的的全局识别
package.json中设置--types的方式发布的声明文件会被自动识别,不需要做其他操作。- 发布到
DefinitelyTyped的,需要执行npm install @types/foo --save-dev。默认情况下@types的声明文件会被自动识别。 - 对于某些团队而言,拥有允许全局泄漏的定义可能是一个问题。因此,你可以通过配置
tscontig.json的compilerOptions.types选项,引入有意义的类型。- 在
tsconfig.json中配置compilerOptions.types:["jquery"]之后,只允许使用jQuery的@types包。即使安装了另一个声明文件,如npm install@types/node,它的全局变量(如process)也不会泄漏到你的代码中,直到你将它们添加到tsconfig.json类型选项中。
- 在
为没有发布声明文件的第三方包编写声明文件
- 在
global.d.ts全局声明文件中编写 - 在根目录下的
types目录下编写同包名的foo.d.ts文件, 并配置tsconfig.json中的paths和baseUrl字段。如此配置之后,通过import导入foo的时候,除了node_modules/@types目录,也会去types目录下寻找对应的模块的声明文件。// tsconfig.json { "compilerOptions": { "module": "commonjs", "baseUrl": "./", "paths": { "*": ["types/*"] } } }