1、.d.ts是干嘛的
.d.ts文件是ts用來聲明變量,模塊,type,interface等等,聲明變量之后,在其他地方可以不用import導(dǎo)入這些東西就可以直接使用,并且有語法提示。有一個(gè)重要前提tsconfig.json文件里的include需要添加這些文件路徑,不需要是絕對路徑,匹配這個(gè)文件所在的文件夾或者祖宗級別的文件夾,可以通過glob通配符。
glob通配符:
*匹配0或者多個(gè)字符(不包括目錄分隔)
匹配一個(gè)任意字符(不包括目錄分隔)
**/遞歸匹配任意子目錄
2、declare是干嘛的
.d.ts文件中的頂級聲明必須以“declare”或“export”修飾符開頭
通過“declare”聲明的類型或者變量或者模塊,在include包含的文件范圍內(nèi),都可以直接引用而不用去import或者import type相應(yīng)的變量或者類型。
(1)declare聲明一個(gè)類型
declare type Admin {
name: string;
}
在include包含的文件范圍內(nèi)可以直接使用Admin這個(gè)type。
(2)declare聲明一個(gè)模塊
declare module '*.css';
declare module '*.less';
declare module '*.png';
在編輯ts文件時(shí),如果你想導(dǎo)入一個(gè).css/.less/.png格式的文件,如果沒有經(jīng)過declare的話是會提示語法錯(cuò)誤的。
(3)declare聲明一個(gè)變量
假如使用了一個(gè)sdk,這個(gè)sdk中有一些全局對象,比如微信的sdk有wx,但是不經(jīng)過任何的聲明在ts文件里面直接用wx.config()的話肯定會報(bào)錯(cuò)。
總結(jié)一句話:declare就是告訴ts編譯器你擔(dān)保這些變量和模塊存在并聲明了相應(yīng)的變量,編譯的時(shí)候不需要提示語法錯(cuò)誤。
(4)declare聲明一個(gè)作用域
declare namespace API {
interface ResponseList {}
}
聲明完之后在其他地方的ts就可以直接API.ResponseList引用到這個(gè)接口類型。
3、注意
(1).d.ts文件頂級聲明declare最好不要跟export同級使用,不然其他ts文件引用該文件的內(nèi)容時(shí)就需要手動import導(dǎo)入
(2)在.d.ts文件里如果頂級聲明不用export的話,declare和直接寫type、interface效果是一樣的,其他地方可以直接引用。
declare type Add = {
a: string;
}
type Bdd = {
b: string;
}
可以直接使用Add和Bdd作為某個(gè)變量的類型