Задача в том, чтобы преобразовать данные, хранимые на бэке в класс, который будет навешивать дополнительные методы для работы с данными и какие-то дополнительная поля, которые нужны только в рамках работы внутри фронта, но не нужны на бэке.
Примерно так:
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 }