Infer тип конструктора в TypeScript - PullRequest
2 голосов
/ 26 апреля 2019

Можно ли вывести тип конструктора класса в TypeScript?Я пробовал это, но, похоже, не работает:

type Constructor<K> = K extends { new: infer T } ? T : any;

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

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

class A { private x: any}

type AInstance = InstanceType<typeof A> // same as A

Определение этого типа:

type InstanceType<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : any;
0 голосов
/ 26 апреля 2019

Вместо того, чтобы пытаться сделать вывод, можете ли вы ссылаться на типы классов по их функциям конструктора, как это?

type Constructor<K> = { new(): K };

const x: Constructor<String> = String; 

const s = new x();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...