javascript - typescript ,使用没有构造函数的类

标签 javascript angular class typescript constructor

在使用 Angular 网站上的“英雄之旅”教程时,我发现了以下语法(很快):

class Hero {
  id: number,
  name: string,
}

const aHero: Hero = {
  id: 1,
  name: 'Superman'
}

console.log(aHero instanceof Hero); //false

这样做的意义何在?当我检查“aHero”的类型时,它只是一个普通对象而不是“Hero”类型。用构造函数初始化一个对象会更好吗?:

class Hero {
  constructor(id: number, name: string) {}
}

最佳答案

您可以将类用作一种类型,这就是您使用它的方式。因此,无论 Hero 是接口(interface)还是类都无关紧要,因为您将它作为一种类型来使用。

class Hero { id: number; name: string }

interface Hero { id: number; name: string }

下面不关心Hero是类还是接口(interface)

let hero: Hero = { id: 1, name: 'me' }

interfaceclass 的区别在于 interface 仅供您使用,它不会被转译为 javascript。 class 可以,但您不能 new interface

构造函数或没有构造函数,如果您新建它那么它就是一个instanceof。用这个再试一次

let hero = new Hero();

您的 instanceof 日志将为 true,因为您确实使用关键字 new 创建了一个 Hero 实例。

关于javascript - typescript ,使用没有构造函数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47996399/

相关文章:

javascript - 动态添加 Tiles 到 TileContainer

javascript - 如何远程自动更新 node.js 应用程序

javascript - Haml 正在删除 javascript

json - Angular 2+ http get() JSON 数据。无法过滤数据

java - 如何通过类的对象来修改整个类调用链中的变量?

javascript - jQuery 移动 : Pinch/Zoom/Scale Gesture - console. 日志 ('something' );

css - 如何通过单击其子项(angular2/ts)将样式应用于 div 元素

Angular 2 定义基本 url

c++ - OpenMP 问题

Django 形成不刷新的类