【发布时间】:2017-04-28 08:57:39
【问题描述】:
我开始使用 Angular 并遇到错误。
.../mocks.ts(9,4): 输入 '{"id": number; “名称”:字符串; “描述”:字符串; “库存”:数量; “价格”:数量; “featu ...”不能分配给类型“CarPart []。 对象字面量只能指定已知属性,而“CarPart”类型中不存在“featured”。
我的代码:
汽车零件.ts
export class CarPart {
id: number;
name: string;
description: string;
inStock: number;
price: number;
featured: boolean;
}
模拟.ts
import { CarPart } from './car-part';
export const CARPARTS: CarPart[] = [{
"id": 1,
"name": "Super Tires",
"description": "These tires are the very best",
"inStock": 5,
"price": 299.99,
"featured": false //Line 9
},
{
"id": 2,
"name": "Reinforced Shocks",
"description": "Shocks made of kryptonite",
"inStock": 4,
"price": 500.50,
"featured": false
},
{
"id": 3,
"name": "Padded Seats",
"description": "Super soft seats for a smooth ride",
"inStock": 0,
"price": 333.33,
"featured": true
}];
汽车零件.component.ts
import { Component, OnInit } from '@angular/core';
import { CarPart } from './car-part';
import { CARPARTS } from './mock';
@Component({
selector: 'car-parts',
templateUrl: './car-parts.component.html',
styleUrls: ['./car-parts.component.css']
})
export class CarPartsComponent implements OnInit {
constructor() { }
carParts: CarPart[];
totalCarParts(){
let sum = 0;
for(let carPart of this.carParts){
sum += carPart.inStock;
}
return sum;
}
ngOnInit() {
this.carParts = CARPARTS;
}
}
当我从 mock.ts 和 car-part.ts 中删除“featured”时,它很好,没有错误。如果我添加它或任何其他名称或类型,它将无法工作...... 有人可以解释一下吗?
【问题讨论】:
-
在哪一行出现错误?你用的是什么ts版本?
-
只是出于好奇,试试这个:“export const CARPARTS: Array
”和/或“export const CARPARTS: Array 。看看他们中的任何一个是否都能解决错误。我知道这可能不是您想要的理想情况,但可能会提示正在发生的事情。错误的初始部分“无法将等分配给(您的数组)”让我感到怀疑。除了从此经历检查所有版本等的痛苦(您是否使用旧的 CLI,所有这些)。 -
@Maximus Line 9 in mock.ts(在代码中标记)。我正在使用 TS 版本 ~2.2.0
-
@TimConsolazio 两者都试过了,但 Array
给出了同样的错误。并且 Array 给出了另一个错误:找不到名称“Any”。奇怪的是。没有“特色”,一切正常。当我尝试添加除前 5 个属性(id、name、descr、inStock 和 price)之外的另一个属性时,它会出错...
标签: angular