網站搜尋

javascript - TypeScript 介面中的可選函數


在 TypeScript 中可以建立具有可選函數的介面嗎?

interface IElement {
  name: string;
  options: any;
  type: string;
  value?: string;
  validation(any): boolean; // --> should be optional.

}

答案#1

目前 TypeScript 在介面中允許三種函式宣告的語法:

使用你提供的範例,一個接受 1 個參數(類型為 any)並返回 boolean 值的 validation 函數:

validation: {(flag: any): boolean};

或者在較新的語法中:

validation(flag: any) : boolean;

或者另一個選擇是:

validation: (flag: any) => boolean;

解決方案:

所以要用舊語法使它變成可選是很簡單的:

validation?: {(flag: any): boolean};

使用第二種語法(最近新增——感謝 @toothbrush)

validation?(flag: any) : boolean;

或者在第三種語法中(如你所發現的):

validation?: (flag: any) => boolean;

答案#2

就像欄位屬性一樣,我們也可以在介面中宣告可選的方法,只需在方法名稱後加上「?」

 interface Vehicle{
  run?(): void;
}

class Sedan implements Vehicle {}

class SUV implements Vehicle {
  run() {
    console.log("run run");
  }
}

let suv = new SUV();

suv.run();