javascript - 为什么在打字稿中没有强制使用枚举?
问题描述
我把这个问题归结为几行代码。本质上,我正在接收一个对象并希望将其转换为接口。但是,在进行强制转换时不会强制执行枚举。这是一个简化的示例,显示未强制执行枚举。如何正确地将对象转换为接口?
enum Color {
Blue,
Green,
Brown
}
interface Person {
eye: Color
}
const myObj: any = {
eye: 'Orange'
};
const myPerson: Person = myObj;
console.log(myPerson.eye); // Prints 'Orange'
解决方案
Typescript 确实将枚举强制为类型。但是,您的示例不会产生预期的效果。通过暗示它myObj
是类型,any
没有强制执行任何类型。
enum Status {
ONLINE,
OFFLINE,
ERROR
}
status: Status = "Active";
这将给出以下 Typescript 错误:
TS2322: Type '"Active"' is not assignable to type 'Status'.
推荐阅读
- javascript - 无法在 React.js 中加载表
- git - 一旦冲突解决,删除/撤消将基本分支合并到功能分支中是否安全?
- templates - 带有条件的 OCP 自定义模板
- c - 替换数组的打印字符
- html - DOM 节点在我的 Angular 中不断增加
- c# - 为什么此代码仅在第二次运行时才有效?
- swift - 如何修复 UIcollectionViewCell 显示空单元格?
- visual-studio-code - VScode远程'_workbench.downloadResource'失败
- java - 如何使用springboot将数据从数据库动态更新到图表(highchart)
- javascript - 我同时使用 React 和 Google Translation api。还有一个问题