Задать вопрос
@historydev
long long long long long .... int

Как типизировать созданные геттеры?

export class User {
    private readonly props: UserProps;

    constructor(props: UserProps) {
        this.props = userSchema.parse(props);

        for (const key of Object.keys(props) as Array<keyof UserProps>) {
            Object.defineProperty(this, key, {
                get: () => this.props[key],
                enumerable: true,
            });
        }
    }
}

const user = new User({firstname: 'John', /* other fields */});
console.log(user.firstname); // TS2339: Property firstname does not exist on type User
  • Вопрос задан
  • 221 просмотр
Подписаться 1 Простой 18 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Курс по TypeScript
    3 месяца
    Далее
  • Merion Academy
    Онлайн-курс по TypeScript
    2 месяца
    Далее
  • Stepik
    TypeScript с 0 до ПРО | Решение задач по TS, разбор сложных тем
    1 неделя
    Далее
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Я тоже не совсем понял, почему нужен именно класс, но если уж приспичило, то типизировать можно так: ссылка

и поскольку у тебя фиксированный набор полей, то лучше однократно навесить геттеры на прототип этого класса. То есть на User.prototype. Будет экономичнее при создании множества экземпляров. Только функцию для геттера сделать не стрелочной
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы