typescript - 枚举映射的打字稿转换问题
问题描述
我有以下打字稿模型:
enum Metric {
COLOR = 'COLOR',
SIZE = 'SIZE'
};
interface Stats {
id: number;
metrics: {[key: number]: {[metricKey in Metric]?: number }};
}
我尝试将一些对象投射到Stats
:
const ok = {
id: 10
} as Stats;
const notOk = {
metrics: {
0: {
[Metric.COLOR]: 10
}
}
} as Stats;
我不明白为什么第一个可以,但第二个不行。它触发TS2352 输入“统计”可能是一个错误,因为这两种类型都没有充分重叠。如果这是故意的,请先将表达式转换为“未知”。
如果可能的话,我不想使用as unknown as Stats
这里是打字稿游乐场
解决方案
id
中缺少的成员notOk
。此代码有效:
enum Metric {
COLOR = 'COLOR',
SIZE = 'SIZE'
};
interface Stats {
id: number;
metrics: {[key: number]: {[metricKey in Metric]?: number }};
}
const ok = {
id: 10
} as Stats;
const notOk = {
id: 1,
metrics: {
0: {
[Metric.COLOR]: 10
}
}
} as Stats;
推荐阅读
- python-3.x - 卷积神经网络的图像预处理
- javascript - 2 种写 Plotly.newPlot 的方法:有区别吗?
- python - 循环遍历非 None 和非空目录
- database - Sonarqube - 非常大的数据库
- c# - 如何在 C# 中为未处理的异常全局应用异常(应用程序是 WPF、Winforms 和类库项目的组合)
- java - Tomcat 日志记录属性过滤
- github - 从 github 获取最新的 pkg
- java - Java 使用嵌套的 for 循环打印模式
- c++ - GCC编译器空值错误
- c# - 无法使用 Galasoft MVVM 显示 TreeView 项目