Typescript, используя классы без конструктора

Во время работы с учебником "Tour of Heroes" на веб-сайте Angular я нашел следующий синтаксис (коротко):

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

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

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

Каким будет смысл в этом? когда, если я проверю тип "aHero", это всего лишь общий объект, а не тип "Герой". Было бы лучше просто инициализировать объект с помощью конструктора?:

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

Ответы

Ответ 1

Вы можете использовать класс как тип, который вы используете. Итак, независимо от того, является ли Hero интерфейсом или классом, это не имеет значения, потому что вы используете его как тип.

class Hero { id: number; name: string }

или

interface Hero { id: number; name: string }

Ниже не рассматривается, является ли Hero классом или интерфейсом

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

Где interface и class различают interface только для вас, он не переводится в javascript. A class делает, и вы не можете new a interface.

Конструктор или конструктор, если вы new, то это instanceof. Попробуйте еще раз с этим

let hero = new Hero();

Ваш журнал instanceof будет true, потому что вы создали экземпляр Hero с ключевым словом new.