typescript - 类型 'selected' 的属性 'boolean' 不可分配给 'string' 索引类型 'Field'

标签 typescript

关于这段代码

export interface Field {
  selected:  boolean;
  value: any;
}

export interface ConflictingVersionModel {
  [key: string]: Field;
  selected: boolean;
}

我得到这个错误: TS2411:类型为“boolean”的属性“selected”不可分配给“string”索引类型“Field”。

如果我尝试相同的:

export interface ConflictingVersionModel {
  [key: string]: {
    selected:  boolean;
    value: any;
  };
  selected: boolean;
}

有什么地方可能是错的吗?

最佳答案

是的,那行不通。索引签名意味着“此对象的所有属性都具有此类型”。

不过,您可以使用交集类型

实现您正在尝试做的事情
export interface Field {
  selected:  boolean;
  value: any;
}

type ConflictingVersionModel = {
  [key: string]: Field;
} & { selected: boolean }

关于typescript - 类型 'selected' 的属性 'boolean' 不可分配给 'string' 索引类型 'Field',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72669756/

相关文章:

javascript - 属性在装饰器中未定义

angular - ngx-Codemirror 游标无法正常工作-Angular 8

typescript - 有没有一种简单的方法来对 typescript 字典进行排序?

javascript - 用 TypeScript 计算 knockout ?

javascript - 如何生成 Mobx.autorun 以防止在类构造函数中触发?

angular - 如何使用@input装饰器angular 2触发变化

javascript - Angular 6 服务无法通过单元测试(NullInjectorError : No provider for HttpClient!)

angular - 错误类型错误 : Cannot read property 'length' of null in Angular 6

javascript - 如何修复链中最后一个 promise 的返回类型?

javascript - 查找已登录 Angular 6 的用户 ID