JavaScript 类与 TypeScript 类

标签 javascript typescript

我是 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");

现在,我有三个问题

  1. 什么是@class(或JavaScript 中的@)? var User =/** @class */(function () {

  2. 类也在 JavaScript 中?那么为什么 TypeScript 不将它们转换为 JS 类呢?

  3. 在 TS 类中我们可以做这样的事情

    类用户{ 名称:字符串; 邮箱:字符串;

但是我们不能在 JavaScript 中做这样的事情吗?或者说JS类和TS类有什么区别?

最佳答案

回答您的问题:

  1. @class 是一种与标准无关的注解/注释。

  2. 在 ES5(比如说“经典 JavaScript”)中没有类,但是有一种方法可以模拟它们的行为,当 TypeScript 代码被转译为 ES5 时也是如此。与新规范相比,这种编写“类”(请记住它们不存在)的方法有点困难。

  3. 请参阅答案 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/

相关文章:

javascript - 动态更新 ref Vuejs 和 Vuefire

javascript - 异步在摘要阶段运行

angular - Ionic2 - 未捕获运行时错误( promise ): Error: No provider for Http

typescript - 使用 typescript 在 nativescript 中缺少 android 包

javascript - 表示树数据的 Backbone 集合

javascript 函数在移入 .js 文件之前一直有效

javascript - 保存并填充 Node js

javascript - 使用 byte[] 发送游戏更新并在 javascript 中转换为数字

javascript - Angular 的 HashId

javascript - TS1148 ~ 如何使用 --module : "import" and typescript 2. x "none"