接口错误地扩展接口

Posted

技术标签:

【中文标题】接口错误地扩展接口【英文标题】:Interface incorrectly extends interface 【发布时间】:2018-11-28 06:29:55 【问题描述】:
class One 
  controls:  [key: string]: number ;


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

我收到一个错误:

TS2430:接口“二”错误地扩展了接口“一”。 属性“控件”的类型不兼容。 键入 ' [key in keyof T]:数字; ' 不可分配给类型 ' [key: string]: number; '

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

打字稿版本:2.4.2

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于接口错误地扩展接口的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 错误“接口 'NodeBuffer' 错误地扩展了接口 'Uint8Array'”

命名空间“React”没有导出成员“InputHTMLAttributes”并且接口“MenuItemProps”错误地扩展了接口“ListItemProps”

错误:node_modules/@types/jasmine/index.d.ts:668:15 - 错误 TS2430:接口 'FunctionMatchers<Fn>' 错误地扩展了接

当我在 vue.js 中 npm runbuild 得到错误接口 'NodeRequire' 不能同时扩展类型 'Require'

Java EE开发平台随手记6——Mybatis扩展4

node_modules/@types/ 错误(接口“元素”不能同时扩展类型“ReactElement<any>)