-
d.ts
文件如果加了import/export
,就不能全局使用了,除非把聲明放在declare global
里面
declare global {
interface X {}
}
-
擴展
庫的模塊,以axios為例:
import {AxiosRequestConfig} from 'axios';
declare module 'axios' {
export interface AxiosRequestConfig {
_autoLoading?: boolean;
}
}
- 如果想給window加全局變量:
// 全局變量
declare var Cesium: any
- 想要在d.ts中聲明函數類型:
function sum(a:number): number // declare 可加可不加
- 在
ts文件中引入js變量
會報錯,這時候就需要自己聲明一個與js文件同名
的.d.ts
文件,然后根據js導出的內容,用ts一一聲明
image.png tsconfig.json
"lib": [
"dom", // lib.dom.ts,瀏覽器的 api
"dom.iterable",
"esnext" // js 的 api
],
- 自己寫
ts庫
的話,
- 沒用工程化環境的情況:
.d.ts
是可以自動生成
的,然后要在tsconfig.json
的types
選項中表明.d.ts文件的路徑
tsc -d main.js // 會生成 main.d.ts
- 工程化環境:
tsconfig.json
里添加declaration: true
-
控制加載某個包的types定義
image.png -
總結
image.png
- 發布ts包
tsc init
tsc