我是打字稿中的“初学者”。现在我被构造函数所困扰。任何人都可以定义我的构造函数以及字符串示例(可能是易于理解的示例)吗? 谢谢
答案 0 :(得分:1)
TypeScript是JavaScript加上静态类型系统,早期采用了一些尚未正式纳入JavaScript的提议功能,以及几乎可以肯定不会采用的一些功能。因此,让我们从其中的JavaScript部分开始。
构造函数(通常只是“构造函数”)是与new
关键字一起使用的函数,用于创建具有特定原型的对象。例如,此语句中的Example
是构造函数:
const ex = new Example();
其中的new Example()
部分有两件事:
Example.prototype
属性所引用的对象。Example
中的代码,其中this
引用新创建的对象在现代JavaScript(和TypeScript)中,您可以通过class
语法创建构造函数。
class Person {
constructor(name) {
this.name = name;
}
}
在ES2015之前,您使用传统的函数语法,但是现在使用class
语法(如果您使用构造函数)(与JavaScript和TypeScript也支持的任何其他编码范例相对,例如函数编程) ),请使用class
语法,因为它对于非平凡的示例更为简洁,并且具有传统函数语法所不具备的一些功能。
class
构造函数只能 作为构造函数调用,除非作为创建新实例的一部分,否则不能调用。
这是一个简单的例子:
class Person {
constructor(name) {
this.name = name;
}
sayHi() {
console.log(`Hi, I'm ${this.name}`);
}
}
使用它:
const p = new Person("FlyingBird");
p.sayHi(); // "Hi, I'm FlyingBird"
移动到TypeScript上,构造函数本身唯一真正的TypeScript特定功能是,您可以在其参数列表中使用语法来自动创建属性。在上面的JavaScript示例中,构造函数具有参数name
,该参数用于在要创建的对象上创建名为name
的公共属性。在TypeScript中,您可以更简洁地执行相同的操作:
// TypeScript
class Person {
constructor(public name: string) {
}
sayHi() {
console.log(`Hi, I'm ${this.name}`);
}
}
public
参数上的name
告诉TypeScript自动将该参数的值分配给具有相同名称的公共属性。您还可以使用private
分配给TypeScript样式的私有属性。 (TypeScript的私有属性并不是真正的私有,尽管它们通常足够好;它们不同于JavaScript的私有字段 [不是属性]。)