TS 声明文件识别配置

43 阅读1分钟

声明是声明文件?

.d.ts这样的包含声明语句的文件就是声明文件。

包声明文件的自动生成

  • --declaration 相关的参数用于控制库声明文件的自动生成,生成位置等信息

包声明文件的发布方式有两种

  • 将声明文件和源码放在一起发布,并在package.json中设置 --types属性指向声明文件(这种模式不需要额外安装其他包,是最为推荐的)。
  • 将声明文件发布到DefinitelyTyped

第三方包声明文件的的全局识别

  • package.json中设置 --types的方式发布的声明文件会被自动识别,不需要做其他操作。
  • 发布到DefinitelyTyped的,需要执行npm install @types/foo --save-dev。默认情况下@types的声明文件会被自动识别。
  • 对于某些团队而言,拥有允许全局泄漏的定义可能是一个问题。因此,你可以通过配置tscontig.jsoncompilerOptions.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/*"]
          }
      }
    }