每个循环语法的typescript错误

时间:2017-05-02 10:12:07

标签: javascript angular typescript

我正在尝试使用typescript 2.0.3创建一个类,但我遇到了一些问题,我不知道为什么。

这是我的代码

import { Component, OnInit } from '@angular/core'; 
import {Car} from '../interfaces/car';

class PrimeCar implements Car 
{
  constructor(public vin, public year, public brand, public color) {}
}
@Component({
  selector: 'rb-test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.css']
})
export class TestComponent implements OnInit {
  displayDialog: boolean;
  car: Car = new PrimeCar(null, null, null , null);
  selectedCar: Car;
  newCar: boolean;
  cars: Car[];
  constructor() { }
  ngOnInit() {
this.cars = [ {vin: '111', year: '5554' , brand: '5646' , color: '6466' },
              {vin: '111', year: '5554' , brand: '5646' , color: '6466' },
              {vin: '111', year: '5554' , brand: '5646' , color: '6466' },
              {vin: '111', year: '5554' , brand: '5646' , color: '6466' }
             ];
  }    
  showDialogToAdd() {
    this.newCar = true;
    this.car = new PrimeCar(null, null, null, null);
    this.displayDialog = true;
  }
  save() {
    const cars = [...this.cars];
    if (this.newCar) {
      cars.push(this.car);
    } else {
      cars[this.findSelectedCarIndex()] = this.car;
    }
    this.cars = cars;
    this.car = null;
    this.displayDialog = false;
  }
  delete() {
    const index = this.findSelectedCarIndex();
    this.cars = this.cars.filter((val, i) => i !== index);
    this.car = null;
    this.displayDialog = false;
  }
  onRowSelect(event) {
    this.newCar = false;
    this.car = this.cloneCar(event.data);
    this.displayDialog = true;
  }    
  cloneCar(c: Car): Car {
    const car = new PrimeCar(null, null, null, null);
    for (let  prop: string in c) {
      car[prop] = c[prop];
    }
    return car;
  }
  findSelectedCarIndex(): number {
    return this.cars.indexOf(this.selectedCar);
  }
}

在cloneCar方法中,我在尝试编写时遇到此错误:

for (let  prop: string in c) {
...}
  

Tslint:标识符'prop'永远不会被重新分配,使用const而不是   让

这是我的IDE中的图像捕获: see error here

注意:我在角项目版本2.3.0中使用此代码

请帮忙!

3 个答案:

答案 0 :(得分:4)

你的IDE是对的。您使用prop而不是let声明const

let适用于可能发生变化的变量。例如:

let x = 5;
x = 7;

我们宣布x,然后我们更改了它的价值。

const适用于不会发生变化的值。例如:

const x = 5;
x = 7; // Throws an error.

因此,在您的情况下,由于prop没有并且不会发生变化,因此必须是常量(const):

for (const  prop: string in c) {
...}

检查this documentation以获得更深入的了解。

答案 1 :(得分:0)

变量prop仅用于读取。你没有给它任何东西,所以它不会改变。这意味着它应该是const不允许。

答案 2 :(得分:0)

首先,如果您没有重新分配变量,只是提示错误,告诉您最好使用const代替let

第二个是我会选择Object.assign()而不是同样但是是单行。