javascript - examples - typescript за 5 минут




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

Вы можете использовать класс как тип, который вы используете. Итак, является ли 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. class делает, и вы не можете new interface .

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

let hero = new Hero();

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

Во время работы с учебным пособием «Тур героев» на веб-сайте 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) {}
}

Я знаю, что на этот вопрос уже был дан ответ, но с точки зрения объектно-ориентированного кода это всегда было так.

Я считаю, что вы можете сделать это без конструктора:

let hero: Hero = { ID: 1, Name: 'goku'};

но если вы хотите создать экземпляр с помощью конструктора, вы можете сделать это в классе

class Hero
{
    //notice optional parameters. You have more flexibility this way.
    constructor(id?: number, name?: string)
    {  
      this.ID = id;
      this.Name = name;
    }

    ID: number;
    Name: string
}

И сделать это с реализацией

let hero: Hero = new Hero(1,'goku');
let hero2: Hero = { ID: 2, Name: 'superman' }




constructor