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

时间:2017-06-28 09:41:33

标签: angular typescript

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

模型

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"}
];

但我在这些文件中有错误说:

  

类型'{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”

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

1 个答案:

答案 0 :(得分:3)

你在这里弄错了:

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")
];