@AndrewRusinas

Как подружить тип/интерфейс с классом в TS?

Задача в том, чтобы преобразовать данные, хранимые на бэке в класс, который будет навешивать дополнительные методы для работы с данными и какие-то дополнительная поля, которые нужны только в рамках работы внутри фронта, но не нужны на бэке.

Примерно так:
type UserType = {
    firstname: string 
    lastname: string
    age: number
}

class User {
    id: string
    firstname: string
    lastname: string
    age: number

    constructor(user: UserType) {
        this.id = nanoid()
        this.firstname = user.firstname
        this.lastname = user.lastname
        this.age = user.age
    }

    someMethod() {
        // some work
    }

    someMethod2() {
        // some work 2
    }

    toObject(): UserType {
        const user_object: UserType = {
            // blah blah
        }

        return user_object
    }
}


Точнее это то, к чему я пришел. Но делают ли так, нормальная ли это практика? Если это окей, то как в таких случаях именуются сущности? Знаю, что интерфейсы принято (было) называть с заглавной I перед названием, для типов ничего подобного не видел. Плюс услышал, что это устаревшая практика, оттого в еще большем заблуждении.

UPD:
Насколько целесообразно наследоваться от типа/интерфейса при создании класса? Опять же, в моём конкретном случае (возможно, я всё делаю не так и не правильно и вообще дурак и надо совсем по другому):

class User implements UserType { // code }
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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