繁体   English   中英

如何从Typescript中的枚举分配字符串类型?

How to assign string types from a enum in Typescript?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

所以我有一个包含一组字符串的枚举

export enum apiErrors {
    INVALID_SHAPE = "INVALID_SHAPE",
    NOT_FOUND = "NOT_FOUND",
    EXISTS = "EXISTS",
    INVALID_AUTH = "INVALID_AUTH",
    INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
}

我定义了如下界面

export interface IApiResponse {
    status: boolean;
    payload: any;
    errorCode?: string; // I want this to be "INVALID_SHAPE" | "NOT_FOUND" and so on...
}

我知道我可以像"INVALID_SHAPE" | "NOT_FOUND" ...一样定义"INVALID_SHAPE" | "NOT_FOUND" ... "INVALID_SHAPE" | "NOT_FOUND" ...

但是,是否有一种方法可以将枚举结构分解为errorCode ,使其只能接受这些字符串之一?

1 个回复

如@JBNizet和@AviadP所述,只需将errorCode设置为apiErrors枚举即可。 Typescript将自动确保实现IApiResponse接口的所有内容都将errorCode设置为这些值之一。

export enum apiErrors {
   INVALID_SHAPE = "INVALID_SHAPE",
   NOT_FOUND = "NOT_FOUND",
   EXISTS = "EXISTS",
   INVALID_AUTH = "INVALID_AUTH",
   INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR"
}

export interface IApiResponse {
   status: boolean;
   payload: any;
   errorCode?: apiErrors // this is the change
}

// this would now be invalid
const invalidResponse: IApiResponse = {
   status: false,
   payload: {foo: 'bar'},
   errorCode: 'something not in the enum',
};

// this is valid
const validResponse: IApiResponse = {
   status: false,
   payload: {foo: 'bar'},
   errorCode: apiErrors.INVALID_SHAPE,
};

// this is also valid
const anotherValidResponse: IApiResponse = {
   status: true,
   payload: {foo: 'bar'},
   // errorCode isn't included at all
};
1 如何从打字稿中的枚举中获取字符串值?

我有一个字符串值的枚举。 我想将一个字符串值传递给 enum 并从中获取值。 我也有课 现在我正在调用下面的函数 现在我想像这样传递枚举中的值,但我无法做到 但是现在允许我得到错误类型的编译时错误。 请告诉我如何实现? 编辑:错误是 元素隐式具有“any”类型,因为“string” ...

6 来自 JSON 字符串的打字稿`enum`

有没有办法让 TypeScript 枚举与来自 JSON 的字符串兼容? 例如: 我想thing.type == Type.NEW是真实的。 或者更具体地说,我希望我可以将enum值指定为字符串,而不是数字。 我知道我可以使用thing.type.toString() == Type[Typ ...

7 如何在 TypeScript 中分配多种可能的类型

我有一个简单的反应组件,我在其中输入应该能够成为其中一种类型的输入。 如果可能的话,我不知道该怎么做。 如果不是,归档相同效果的好做法是什么? ` 当我尝试联合类型时,地图函数上出现以下错误: 亲切的问候 ...

10 如何在TypeScript中将字符串细化为“字符串枚举”?

以这个简单的字符串枚举为例: 但是,假设我想创建另一个处理任意string函数,该函数源自不受信任的用户输入。 字符串应该是有效的Animal ,但它可能包含拼写错误,因此我们需要在运行时验证它。 这是一个例子: getNoise(animal)调用会导致TypeScri ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM