Hos*_*rad 5 javascript typescript
假设我有一个用 TypeScript 编写的类,如下所示:
class Messenger {
x = 10;
constructor(){
this.y = 20;
}
};
Run Code Online (Sandbox Code Playgroud)
JavaScript 版本将如下所示:
var Messenger = (function () {
function Messenger() {
this.x = 10;
this.y = 20;
}
return Messenger;
}());
;
Run Code Online (Sandbox Code Playgroud)
x 和 y 变量在 JavaScript 中被编译为相同的东西,那么这里有什么区别呢?
谢谢。
它确实可以编译,但是编译器应该给您一条错误消息,表明 y 不是 Messenger 类的一部分:
constructor(){
this.y = 20;
}
Run Code Online (Sandbox Code Playgroud)
然而,无论错误如何,编译器通常都会进行编译,除非您在tsconfig.json. 然而,有一种方法可以在构造函数内部声明变量,但它不是在主体中,而是在参数列表中。像这样:
constructor(public y: number){}
Run Code Online (Sandbox Code Playgroud)
要么放在他们面前private,要么public放在他们面前。这样,变量就会自动设置为您插入构造函数中的任何内容,而无需执行任何操作this.y = y;。这是创建变量的非常简单的方法,您将始终将其插入到构造函数中。
您甚至可以给出一个默认参数,如果您不向构造函数中插入任何参数,该参数将起作用:
constructor(public y = 20){}
Run Code Online (Sandbox Code Playgroud)
查看这篇文章以获取更多信息。