TypeScript declare

admin發表於2019-05-01

為了增加人性化程度,在IDE編寫程式碼的時候,通常會有智慧提示效果。

以VScode為例子,截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201905/01/001707lakag6mdsg5cj6bl.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

當鍵入document.的時候,會自動彈出可能的選項,這是VScode內建的功能。

但是當編寫jQuery或者其他一些庫的程式碼時候,則沒有類似的提示,非常的不方便。

不過可以自定義或者使用已經定義好的d.ts檔案來解決此問題。

declare可以向TypeScript域中引入一個變數,在編寫程式碼的時候就能夠實現智慧提示的功能。

程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
declare function func(str: string): void;

應用截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201905/01/001810m7v3il4vlgl93l4s.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

當輸入func會出現智慧提示效果;通常程式碼不是直接寫在當前ts檔案,而是集中在.d.ts檔案,然後引入。

下面給出一些常用的宣告演示。

一.宣告變數:

[typescript] 純文字檢視 複製程式碼
declare var ant:string

上面宣告一個字串型別變數ant。

[typescript] 純文字檢視 複製程式碼
declare const min:1

上面宣告一個常量min並賦值1。

二.宣告函式:

[typescript] 純文字檢視 複製程式碼
declare function func(str:string):string

宣告一個傳遞string引數,返回值也是string型別的函式。

三.宣告class類:

[typescript] 純文字檢視 複製程式碼
declare class Person {
  static maxAge: number //靜態變數
  static getMaxAge(): number //靜態方法
 
  constructor(name: string, age: number)  //建構函式
  getName(id: number): string
}

宣告一個類,並且規定若干類成員的型別和訪問修飾符等。

四.宣告名稱空間:

[typescript] 純文字檢視 複製程式碼
declare namespace space {
  function func(str: string): string;
  let num: number;
}

宣告一個名稱空間,裡面有一個函式成員和變數成員。

五.混合型別:

有些只可能不但是函式,而且又是類或者物件,比如jQuery:

[JavaScript] 純文字檢視 複製程式碼
new $()
$.ajax()
$()

程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
declare function Minx(str:string): void
declare namespace Minx{
  let num:number
}

六.模組化:

很多時候需要通過require的方式引入模組化的程式碼:

例如以下效果:

a:3:{s:3:\"pic\";s:43:\"portal/201905/01/002109idxwj1qnfrrj40x3.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

對應的寫法如下:

[typescript] 純文字檢視 複製程式碼
declare module "abcde" {
  export let a: number
  export function b(): number
  export namespace c{
    let cd: string
  }
 }

非常的簡單,不再多介紹。

相關文章