聲明
1. 聲明文件
當使用第三方庫時,我們需要引用他的聲明文件,擦能獲得對應的代碼補全、接口提示等功能
2. 聲明語句
使用語句定義類型
declare var
declare function
declare class
......
3. 聲明文件
將存放聲明語句的文件稱爲聲明文件,通常會把聲明語句放到一個單獨的文件中(jQuery.d.ts)。
聲明文件必需以 .d.ts 爲後綴
4. 第三方聲明文件
有些庫已經有定義好的聲明文件,我們可以直接下載使用,最好是使用 @types 統一管理第三方庫的聲明文件。
npm install @type/第三方庫 --save-dev
eg: npm install @type/jquery --save-dev
5. 書寫聲明文件
當一個第三方庫沒有提供聲明文件時,我們需要自己書寫聲明文件,不同場景下,聲明文件的內容和使用方式不同:
-
全局變量:
通過 <script> 標籤引入第三方庫,注入全局變量
-
npm包:
通過 import dateFormat from 'DateFormat' 導入,符合 ES6 模塊規範
-
UMD庫:
既可以通過 <script> 標籤引入,也可以通過 import 導入
-
模塊插件:
通過 import 導入後,可以改變另一個模塊的結構
-
直接擴展全局變量:
通過 <script> 標籤引入後,改變一個全局變量的結構。比如爲 String.prototype 新增一個方法
-
通過導入擴展全局變量:
通過 import 導入後,可以改變一個全局變量的結構
6. 全局變量
// 假如使用第三方庫jQuery,在html中通過<script>標籤引入jQuery,然後就可以使用全局變量$/jQuery了,在ts中使用方法如下:
declare var jQuery:(selector:string) => any;
jQuery('#id');
// declare var 並沒有真的定義一個變量,只是定義了全局變量jQuery的類型,僅僅會用於編譯時的檢查,在編譯結果中會被刪除
使用全局變量的聲明文件時,如果是通過 npm install @type/xxx --save-dev 方式安裝的,則不需要任何配置。
如果是將聲明文件 xxx.d.ts 直接存放於當前項目中,最好和其他源碼放在一個目錄下便於整理。
如果聲明文件沒有生效,可以檢查一下tsconfig.json中的files、include和exclude配置,確保其包含了jQuery.d.ts文件。
全局變量的聲明文件的語法:
- declare var 聲明全局變量
// declare let/const, let 和 var 沒有什麼區別,使用 const 定義的是常量,不允許修改值,一般全局變量都是禁止修改的常量,所以const更常用。
- declare function 聲明全局方法
- declare class 聲明全局類
- declare enum 聲明全局枚舉類型
- declare namespace 聲明全局對象(含有子屬性)
- interface 和 type 聲明全局類型
聲明語句中只能定義類型,不能定義具體的值!
declare var