在Typescript代码中是否需要构造函数?

时间:2016-07-28 10:09:56

标签: javascript typescript visual-studio-code aurelia

我使用aurelia-cli命令使用au new生成了一个新的Aurelia项目。

这是给我的app.ts

export class App {
  message = 'Hello World!';
}

我使用此tutorial中的app.ts更新了app.ts,如下所示:

export class App {
  constructor() {
    this.message = 'Hello World!';
    this.firstName = "Animesh";
    this.lastName = "Bulusu";
  }

  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

刷新页面时我可以看到预期的输出,但是我在错误控制台中看到了这些错误。

  

财产'消息'类型' App'上不存在   财产'姓氏'类型' App'上不存在   财产'姓氏'类型' App'上不存在。

如果我删除构造函数并将变量直接放在类中,这些错误就会消失。为什么这样,我如何摆脱这些错误?

1 个答案:

答案 0 :(得分:7)

您需要声明成员:

class App {
    private message: string;
    private firstName: string;
    private lastName: string;

    constructor() {
        this.message = 'Hello World!';
        this.firstName = "Animesh";
        this.lastName = "Bulusu";
    }
 }

然后错误就会消失。

修改

如果您的初始成员值是常量,并且在创建新实例时不需要初始化任何内容,那么就不需要构造函数:

class App {
    private message = 'Hello World!';
    private firstName = "Animesh";
    private lastName = "Bulusu";
}

(注意,这里也没有必要指定成员的类型,因为编译器可以推断它们是字符串)

此外,如果您希望为成员分配传递给构造函数的值,那么您也可以使用快捷方式(我非常确定它来自C#):

class App {
    constructor(private message: string, public name: string) {}
}