class One {
controls: { [key: string]: number };
}
interface Two<T> extends One {
controls: { [key in keyof T]: number }
}
我收到错误:
TS2430:接口'Two'错误地扩展了接口'One'。 财产“控件的类型是不兼容的。 类型“{[键在keyof T]:号码; }“不是分配给类型” {[键:字符串]:号码; }“
在打字稿操场(click)中,一切似乎都没问题。它发生了什么?
打字稿版本:2.4.2
答案 0 :(得分:0)
这是2.4中的问题,在2.5中得到修复。您可以查看GitHub issue。基本上在2.4中这是不允许的,在2.5中明确允许:
keyof T
上的映射类型[是]具有字符串索引签名的类型的子类型