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();
