当我们在TS文件中需要引入外部库时,编译时是无法判断传入参数的类型的,所以我们需要在引入前加入一个声明文件来帮助ts判断类型。
当然现在大部分库都自带有自己的声明文件,一般在@types目录下。
使用场景
- 在ts文件中对引用的外部库做类型判断;
- 制作npm包时,书写自己的声明文件,需要在package.json的typing/types字段注册声明文件的路径;
- 不使用ts时,也可以添加声明文件与(自己的)的模块存放在同一目录下,简单做一下数据结构体,对IDE参数声明也有用哦;
引用声明文件的几种方法
- 与调用的ts文件放在同一目录下;
- 在声明文件tsconfig.json的include/files字段下添加声明文件的路径;
实例
-
以外部库fs为例(假设fs没有自己的声明文件)
-
fs.d.ts
declare module 'fs' {
function readFileSync(path: string | number, options?: { encoding?: string; flag?: string; } | null): string;
}
import * as fs from 'fs'
const body = fs.readFileSync('../@types/fs.d.ts', {encoding: 'utf8'});
console.log(body);
总结
- 声明文件一般只能声明外部引入的npm包;
- 声明文件一定要用declare module 'fs'显式的声明自己的外部库名称;
|
请发表评论