Выбор ответа Middle Классы и интерфейсы обновлено
Тип конструктора класса
Вопрос
Какой тип параметра C позволит вызвать new C() внутри функции?
class User {
name = 'Аня';
}
function create(C: /* ? */) {
return new C();
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: typeof User. Имя класса в позиции типа означает тип экземпляра: User это объект с полями пользователя, и new на нём вызвать нельзя.
Варианты ответа
InstanceType<User>User[]Usertypeof Userправильный ответ
Разбор
Имя класса в позиции типа означает тип экземпляра: User это объект с полями пользователя, и new на нём вызвать нельзя. Тип самого класса, то есть конструктора со статическими членами, это typeof User. Обобщённо пишут new (...args: any[]) => T.
InstanceType принимает тип конструктора и возвращает экземпляр, обратная операция, и InstanceType<User> даже не скомпилируется. User[] массив экземпляров.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.