接口错误地扩展了接口

elz*_*zoy 5 interface typescript

class One {\n  controls: { [key: string]: number };\n}\n\ninterface Two<T> extends One {\n  controls: { [key in keyof T]: number }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到一个错误:

\n\n
\n

TS2430: 接口\xc2\xa0\'两个\'\xc2\xa0不正确\xc2\xa0扩展\xc2\xa0接口\xc2\xa0\'一个\'。\n \xc2\xa0\xc2\xa0Types\xc2\xa0of\xc2 \xa0property\xc2\xa0\'控件\'\xc2\xa0\xc2\xa0不兼容。\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0Type\xc2\xa0\'{\xc2\xa0[键\xc2\xa0in\xc2\xa0keyof\xc2\xa0T]:\xc2\xa0number;\xc2\xa0}\'\xc2\xa0is\xc2\xa0not\xc2\xa0可分配\xc2\xa0to\xc2\xa0type\xc2\ xa0\'{\xc2\xa0[键:\xc2\xa0string]:\xc2\xa0number;\xc2\xa0}\'

\n
\n\n

在打字稿游乐场(点击)中,一切似乎都很好。这是怎么回事?

\n\n

打字稿版本:2.4.2

\n

Tit*_*mir 1

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

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