class cls {
str= 'hello';
}
VS
class cls {
str: string;
constructor() {
this.str = 'hello';
}
}
这两种形式有什么区别?
答案 0 :(得分:1)
没有。这样:
class Foo {
str = 'hello';
}
class Bar {
str: string;
constructor() {
this.str = 'hello';
}
}
将产生以下输出:
var Foo = (function () {
function Foo() {
this.str = 'hello';
}
return Foo;
}());
var Bar = (function () {
function Bar() {
this.str = 'hello';
}
return Bar;
}());
答案 1 :(得分:1)
这里没有具体的区别。但是如果你写下面的话:
class cls {
str: string;
constructor(string str) {
this.str = str;
}
然后在类的初始化时,您可以将值赋给property。 例如:
var obj1= new cls("obj1");
var obj2= new cls("obj2");
第一种情况无法做到这一点。
答案 2 :(得分:-1)
当您选择在构造函数中初始化变量时,它为您提供了在创建对象时初始化这些值的额外好处,如下所示:
var obj1= new cls("obj1"); //Ability to change variable value
var obj2= new cls("obj2");
但是当你没有在构造函数中初始化值时,你必须首先创建对象,然后需要访问该变量来改变它的值,如下所示:
var obj1= new cls(); //Two step method to initialize one value
obj1.str = "New value";
因此,在构造函数中初始化变量总是更好和标准的方法,这是使用面向对象编程语言的好处。