TypeScript Duplicate Identifer

时间:2018-02-19 23:17:29

标签: typescript

在以下TypeScript片段

export class Customer {
    firstName : string = "";
    lastName : string = "";

    fullName : string = "";
    constructor(public firstName, public lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.fullName = firstName + " " + lastName;
   }
 }

为什么我在构造函数中的firstName和lastName中出现错误,错误是

 [ts] Duplicate identifier 'firstName'.
 [ts] Subsequent variable declarations must have the same type.  Variable 
'firstName' must be of type 'string', but here has type 'any'.

这应该是一个没有错误的片段。

感谢您的任何指示

2 个答案:

答案 0 :(得分:0)

构造函数中的

public firstName隐式生成firstName字段并对其进行初始化。

因此,创建具有相同名称的另一个字段是错误的。

答案 1 :(得分:0)

您基本上定义了firstNamelastName两次属性。

将参数传递给构造函数并使用public时,实际上是在创建public参数。

如果您有以下课程定义,

class Customer {
   constructor(public firstName: string) { }
}

等于

class Customer {
  public string firstName;

  constructor(firstName: string) { 
    this.firstName = firstName;
  }
}

按如下方式更新您的代码:

export class Customer {
    fullName : string = "";

    constructor(public firstName: string, public lastName: string) {
        this.fullName = firstName + " " + lastName;
   }
 }