Как стать автором
Обновить

Комментарии 4

>> Вывод типов в дженериках
Немного дополню. Иногда вывод типа нужно сделать для экземпляров некоторого класса, например:
class User {
    constructor(readonly lastName: string, readonly firstName: string) {}
}
// Хочется, чтобы IVANOV имел строго то, что написано в конструкторе (lastName - "Иванов", firstName - "Иван")
const IVANOV = new User("Иванов", "Иван");
// Вывод типа >> const IVANOV: User
// Не заработает const IVANOV = new User("Иванов" as const, "Иван" as const);

На помощь приходит простое решение, но почему-то про него забывают
// Тогда  конструкции нужно видоизменить. Декларация конечно монстр
class User2<LN extends string, FN extends string> {
    constructor(readonly lastName: LN, readonly firstName: FN) {}
}
const IVANOV2 = new User2("Иванов", "Иван");
// Вывод типа >> const IVANOV2: User2<"Иванов", "Иван"> 


Если кто подскажет как сделать такое без дженериков буду признателен
abstract class User {
    abstract lastName: string
    abstract firstName: string
}

const IVANOV = new class IvanUser extends User {
    readonly lastName = "Иванов"
    readonly firstName = "Иван"
}
Спасибо за альтернативу. Единственное что VS Code показывает IvanUser, но суть уловил
Использование ключевого слова infer. -> Одно упоминание infer, в первом абзатце, переименуйте заголовок
Зарегистрируйтесь на Хабре, чтобы оставить комментарий