接口错误地扩展接口

时间:2018-06-19 10:16:09

标签: typescript interface

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

1 个答案:

答案 0 :(得分:0)

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

  

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