首页 > 解决方案 > 为什么在打字稿中没有强制使用枚举?

问题描述

我把这个问题归结为几行代码。本质上,我正在接收一个对象并希望将其转换为接口。但是,在进行强制转换时不会强制执行枚举。这是一个简化的示例,显示未强制执行枚举。如何正确地将对象转换为接口?

enum Color {
  Blue,
  Green,
  Brown 
}

interface Person {
  eye: Color
}

const myObj: any = {
  eye: 'Orange'
};

const myPerson: Person = myObj;
console.log(myPerson.eye); // Prints 'Orange'

标签: javascripttypescriptenumscastingenumeration

解决方案


Typescript 确实将枚举强制为类型。但是,您的示例不会产生预期的效果。通过暗示它myObj是类型,any没有强制执行任何类型。

enum Status {
    ONLINE,
    OFFLINE,
    ERROR
}

status: Status = "Active";

这将给出以下 Typescript 错误: TS2322: Type '"Active"' is not assignable to type 'Status'.


推荐阅读