feng xiaohan

TS全局类型声明来源

在编写 TS 的类型定义时,可以声明全局的类型,这样在其它地方就可以直接进行使用,不用再额外的单独引入了。而这些类型定义的来源通常有以下几个:

lib

TS 所需要引用的库(一些标准的 API、浏览器的 API、DOM 相关的 API 等),相关的类型声明是放在 typescript 库下面的 lib 文件夹中,主要是.d.ts文件。

需要在tsconfig.json中配置:

{
  "compilerOptions": {
    "lib": ["DOM", "ES2015", "ScriptHost", "ES2019.Array"],
  }
}

如果没有 DOM,则不能使用window.document之类的对象。

type

来源于文件夹 @type 底下的文件。

可以在tsconfig.json中设置:

{
  "compilerOptions": {
    "typeRoots": [], // 声明文件目录,默认时node_modules/@types
    "types": ["node"] // 加载的声明文件包
  }
}

include/files

TS 也可以搜索include里的指定的文件,或者匹配的文件和文件夹;也可以搜索files里的文件(只能是文件)。然后编译这些文件/文件夹里定义的类型到全局中。

tsconfig.json中设置:

{
  "compilerOptions": {
    "include": [ // 指定一个匹配列表(属于自动指定该路径下的所有ts相关文件)——指定编译的文件或文件夹
        "src/**/*",
           "index.ts"
    ],
      "files": ["demo.ts"], // 指定哪些文件使用该配置(属于手动一个个指定文件)——指定某个文件进行编译(不可指定文件夹)
  }
}

小结

TS 寻找类型文件的顺序:

lib 文件夹 ——> typeRoots 文件夹 ——> include/files 文件

注意: 在 TS 中还可以创建index.d.tsglobal.d.ts,这两个文件夹下的文件不用声明(declare)就可以全局。?母鸡