接口错误地扩展了接口。

5
class One {
  controls: { [key: string]: number };
}

interface Two<T> extends One {
  controls: { [key in keyof T]: number }
}

我收到一个错误信息:
TS2430: 接口 'Two' 错误地扩展了接口 'One'。 属性 'controls' 的类型不兼容。 类型 '{ [key in keyof T]: number; }' 不能赋值给类型 '{ [key: string]: number; }'。
在 TypeScript Playground(点击此处)中,一切似乎都没问题。发生了什么?
TypeScript 版本:2.4.2
1个回答

1
这是一个在2.4版本中存在的问题,在2.5版本中得到了修复。您可以查看GitHub issue。基本上,在2.4版本中,这是不被允许的,在2.5版本中明确允许:

映射类型覆盖 keyof T [是] 类型具有字符串索引签名的子类型


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接