Как определить сигнатуру типа для объектов нового метода - PullRequest
1 голос
/ 29 сентября 2019

Я узнал, что new() - это то, как мы структурно набираем конструктор класса в TypeScript, так как мы можем печатать объект, у которого есть метод new, например:

const k = {
  new() {
    return '123'
  }
}

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Нет соответствующего синтаксиса литерала объекта для определения литерала объекта с new.Вы можете использовать выражение класса:

const k = class {
  constructor () {

  }
}

new k()

play

0 голосов
/ 29 сентября 2019

Ключевое слово new используется для создания класса.

const k = new MyClass();

Чтобы определить конструктор этого класса, вы должны использовать ключевое слово constructor.


class MyClass1 {
  constructor() {
  }
}

const MyClass2 = class {
  constructor() {
  }
}

interface MyClass3 {
    constructor(): Function;  // should be Function *if* we want it generic
}

MyClass1 и MyClass2 вполне эквивалентны.

Будьте осторожны с MyClass3, вы не можете сделать что-то вроде const k = new MyClass3().Но вы можете сделать const k: MyClass3 = new MyClass1().MyClass3 - это интерфейс, поэтому вы можете использовать его только для того, чтобы больше ничего не печатать.

Обратите внимание, что в Typescript при определении класса он также создает интерфейс.Вот почему класс может implements другой класс.

Более подробная информация с TS doc: Класс Интерфейс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...