![](/img/trans.png)
[英]Event target doesn't exist on the lib dom interface in typescript defintion
[英]Property Doesn't Exist on Typescript Interface
我有一個自定義的“ Enum”接口,該接口具有一個值和一個描述。 我已經定義了這樣的枚舉接口-
module App {
export interface IMyEnum {
[index: string]: IMyEnumValue;
}
export interface IMyEnumValue {
value: any;
text: string;
}
}
我的枚舉是這樣的
/// <reference path="./enums.interface.ts"/>
module App {
export const StatusEnum: IMyEnum = {
Normal: { value: 100, text: 'Normal' },
Overdue: { value: 200, text: 'Overdue' },
Critical: { value: 300, text: 'Critical' }
}
}
但是打字稿編譯器抱怨IMyEnum類型不存在“ Normal”。
let statusCode = StatusEnum.Normal.value;
有沒有在不定義IStatusEnum
接口的情況下執行此操作? 我認為這會過度設計。
當您將StatusEnum
為IMyEnum
,實際上會丟失類型信息,只剩下一個索引器: [index: string]: IMyEnumValue
選項1:使用字符串
let statusCode = StatusEnum["Normal"].value;
您將失去枚舉名稱的編譯時安全性(例如StatusEnum["normal"].value
將給出運行時錯誤)。
選項2:擺脫IMyEnum
,讓編譯器推斷類型。
export const StatusEnum = {
Normal: { value: 100, text: 'Normal' },
Overdue: { value: 200, text: 'Overdue' },
Critical: { value: 300, text: 'Critical' }
}
let statusCode = StatusEnum.Normal.value;
這樣,您將具有類型安全性和自動補全功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.