簡體   English   中英

Typescript接口上不存在該屬性

[英]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接口的情況下執行此操作? 我認為這會過度設計。

當您將StatusEnumIMyEnum ,實際上會丟失類型信息,只剩下一個索引器: [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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM