TypeScript 函式介面

admin發表於2018-08-06

介面除了可以規定普通物件的型別,也可以規定函式的型別。

程式碼如下:

[typescript] 純文字檢視 複製程式碼
interface Ifunc {
  (str: string): boolean;
}

上面程式碼規定,函式接受一個字串引數,並且返回值是布林型。

[typescript] 純文字檢視 複製程式碼
interface Ifunc {
  (str: string): boolean;
}
let func:Ifunc=function(str:string){
  return true;
}

再來看一段程式碼例項:

[typescript] 純文字檢視 複製程式碼
interface Ifunc {
  (str: string): boolean;
}
let func:Ifunc=function(str:number){
  return true;
}

上面程式碼會報錯,因為函式的引數是number型別,與介面規定不匹配。

函式的引數名不需要與介面裡定義的名字相匹配,只需要型別相同即可:

[typescript] 純文字檢視 複製程式碼
interface Ifunc {
  (str: string): boolean;
}
let func:Ifunc=function(antString:string){
  return true;
}

函式的型別可以省略,TypeScript的型別系統會推斷出引數型別:

[typescript] 純文字檢視 複製程式碼
interface Ifunc {
  (str: string): boolean;
}
let func:Ifunc=function(str){
  return true;
}

右邊的函式沒有規定引數的型別,但是它是賦值給Ifunc型別變數,所以str會被推斷為string型別。

相關文章