【问题标题】:Type '{id:number, name:string}' cannot be used as an index type类型 '{id:number, name:string}' 不能用作索引类型
【发布时间】:2017-06-28 09:41:33
【问题描述】:

我尝试使用我的自定义模型类型模拟数据。

型号

export class CategoryModel {
  /**
  * Properties
  */
  public id : number;
  public name : string;

  /**
  * Getters
  */
  get Id():number{
    return this.id;
  }
  get Name():string {
    return this.name;
  }

  /**
  * Setters
  */
  set Id(id:number){
    this.id = id;
  }
  set Name(name:string) {
    this.name = name;
  }

  constructor(id:number,name:string)
  {
    this.Id = id;
    this.Name = name;
  }

}

模拟

import { CategoryModel } from '../models/category';

export const CATEGORIES: CategoryModel[{id:number, name:string}] = [
  { id: 0, name: "rzrzr"},
  { id: 1, name: "rerr"},
  { id: 2, name: "aze"}
];

但我在这些文件中有一个错误提示:

Type '{id:number, name:string}' 不能用作索引类型

当我尝试这个时:

import { CategoryModel } from '../models/category';

export const CATEGORIES: CategoryModel[] = [
  { id: 0, name: "rzrzr"},
  { id: 1, name: "rerr"},
  { id: 2, name: "aze"}
];

我有这个错误:

类型“{id:number, name:string}”不可分配给类型“CategoryModel[]”。类型“{id:number, name:string}”不可分配给类型“CategoryModel”。类型“{id:number, name:string}”中缺少属性“Id”

你有什么提示吗?我想我错过了如何将模型构造函数参数传递给我的模拟。

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    你在这里犯了一个错误:

    CategoryModel[{id:number, name:string}]
    

    CategoryModel 已经定义为Object,它具有idname 属性。因此,您应该简单地将其声明为CategoryModel[]

    import { CategoryModel } from '../models/category';
    
    export const CATEGORIES: CategoryModel[] = [
      { id: 0, name: "rzrzr"},
      { id: 1, name: "rerr"},
      { id: 2, name: "aze"}
    ];
    

    另外,您为CategoryModel 创建了构造函数,因此您应该在向数组添加项目时使用它:

    export const CATEGORIES: CategoryModel[] = [
      new CategoryModel(0, "rzrzr"),
      new CategoryModel(1, "rerr"),
      new CategoryModel(2, "aze")
    ];
    

    【讨论】:

    • 您好,我已经尝试过了,但我有另一个错误,我更新我的问题
    • 谢谢你,我觉得自己太笨了,我不得不使用它:),我会在几分钟内接受你的回答
    猜你喜欢
    • 2018-02-13
    • 2023-01-31
    • 2021-12-16
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多