前言
當我們在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;
}
- MyTest.ts
import * as fs from 'fs'
const body = fs.readFileSync('../@types/fs.d.ts', {encoding: 'utf8'});
console.log(body);
總結
- 聲明文件一般只能聲明外部引入的npm包;
- 聲明文件一定要用declare module 'fs'顯式的聲明自己的外部庫名稱;