Аналогично тому, как вы можете вывести параметры функции с помощью Typescript через вывод типа:
type FunctionProps<T> = T extends (arg1: infer U) => any ? U : never;
const stringFunc: (str: string) => string = (str: string): string => str;
type StringFuncType = FunctionProps<typeof stringFunc>;
const a: StringFuncType = 'a';
Я хочу вывести параметры конструктора таким же образом, но пока что безуспешно. В настоящее время моя установка выглядит следующим образом:
type ConstructorProps<T> = T extends {
new (arg1: infer U): T;
} ? U : never;
class Foo { constructor(a: string) { } }
type FooConstructor = ConstructorProps<typeof Foo>;
// FooConstructor is always never but should be type string.
const a: FooConstructor = 'a'
Не был уверен, поддерживается ли это еще в Typescript, так как в разделе «Расширенные типы» в документах TS упоминаются только функции, а не классы для вывода (в отношении параметров).
Кто-нибудь еще может найти решение этой проблемы?