我是 TypeScript 和 JavaScript 类的新手!
我在学习 TypeScript 时创建了这么简单的东西
class User {
name: string;
email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
}
let newUser = new User("Rohit Bhatia", "iro@gmail.com");
这是给我的等价物
var User = /** @class */ (function () {
function User(name, email) {
this.name = name;
this.email = email;
}
return User;
}());
var newUser = new User("Rohit Bhatia", "iro@gmail.com");
现在,我有三个问题
什么是
@class
(或JavaScript 中的@
)?var User =/** @class */(function () {
类也在 JavaScript 中?那么为什么 TypeScript 不将它们转换为 JS 类呢?
在 TS 类中我们可以做这样的事情
类用户{ 名称:字符串; 邮箱:字符串;
但是我们不能在 JavaScript 中做这样的事情吗?或者说JS类和TS类有什么区别?
最佳答案
回答您的问题:
@class
是一种与标准无关的注解/注释。在 ES5(比如说“经典 JavaScript”)中没有类,但是有一种方法可以模拟它们的行为,当 TypeScript 代码被转译为 ES5 时也是如此。与新规范相比,这种编写“类”(请记住它们不存在)的方法有点困难。
请参阅答案 2。还有:
自现代 JavaScript ECMAScript 6 规范 (ES6) 以来,现在 JavaScript 有了类。 TypeScript 是 ES6 的一种进化。在 ES6 中,它会是这样的:
class User {
constructor(name, email) {
this.name = name;
this.email = email;
}
}
var newUser = new User('Rohit Bhatia', 'iro@gmail.com');
关于JavaScript 类与 TypeScript 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54841417/