1.定义
以.d.ts
结尾的文件,叫做声明文件。
作用:为js代码提供类型声明。
放置的位置:
- 放置到node_module/@types文件中
- 放置到typescript.json配置文件指定的文件中
include
/files
指定编译的位置
- 手动配置,
若通过手动配置,则以上两种情况失效
- 通过配置
typeRoots
来指定
- 通过配置
- 与JS代码所在目录相同,并且文件名也相同的文件。用ts代码书写的工程发布之后的格式。
- 即定义了一个index.js文件后,在同一位置定义一个index.d.ts
2.编写
2.1 自动生成
当我们自己用ts编写代码后,进行打包发布后,别人引用我们的包时,希望得到类型提示时,我们可以采用自动生成的方式。
通过typescript.json文件中的declaration
进行配置后,打包时会自动生成对应的.d.ts
文件;通过配置sourceMap
可以生成源码地图文件,用于报错定位调试
{
"compilerOptions": {
"declaration": true, // 用于启用打包自动生成.d.ts声明文件
"sourceMap": true, // 用于启用打包生成sourceMap源码地图,用于报错调试
},
"include": [ // 编译哪个目录
"./src"
],
// "files": ["./src/index.ts"] // 表示仅编译index.ts这个文件
}
2.2 手动编写
当我们使用第三方库时,其没有提供对应的声明文件时,我们可以通过手动编写声明文件来实现。
可以在上面提到的放置位置进行编写
当我们把@type/node删除掉后,node环境下的setInterval、log就没有了声明文件
2.2.1 全局声明文件
declare var console: {
log(message: string): void
}
2.2.2 命名空间
declare namespace console {
function log(message?: string): void
}
当我们使用lodash
第三方库开发时,会出现没有声明,我们可以手动进行模块化声明
import _ from 'lodash'
const a = _.chunk([1, 2, 3, 3], 2)
declare module 'lodash' {
function chunk<T>(arr: T[], n: number): T[][]
}
3.三斜线指令
在一个声明文件中引入另一个声明文件
/// <reference path="./other.d.ts" />