Resource/DTO Mappers
- import:
@azure-net/kit/infra - Preferred location:
src/app/contexts/{ContextName}/infrastructure/http/dto
Базовый класс для наследования при создании ресурсов и DTO-мапперов. Имеет встроенный метод toPlainObject, исключающий методы из класса. Для использования таких методов, как mapCollectionUsing и mapUsing у ResponseBuilder, вам требуется наследоваться от этого класса и выполнять все трансформации и вызовы методов в конструкторе. Само преобразование с помощью этого метода ResponseBuilder выполняет самостоятельно
DTOMapper
typescript
import { DTOMapper } from '@azure-net/kit/infra';
interface IUser {
id: number;
name: string;
email: string;
}
interface IMappedUser {
id: number;
firstName: string;
lastName: string;
email: string;
status: number;
fullName: string;
}
// Вы можете не передавать интерфейс в DTOMapper, но тогда toPlainObject вернет PlainObject<UserDTO>
// PlainObject<UserDTO> будет просто состоять из ключей вашего класса без методов.
class UserDTO extends DTOMapper<IMappedUser> {
id: number;
name: string;
lastName: string;
email: string;
status: number;
fullName: string;
constructor(data: IUser) {
super();
this.id = data.id;
this.name = data.name;
this.lastName = 'SomeTestLastname';
this.email = data.email;
this.status = 1;
// все обработки вызываем в конструкторе
this.fullName = this.getFullName();
}
getFullName() {
return `${this.name} ${this.lastName}`;
}
}
const userDto = new UserDTO(userData); // Наш DTO
const plain = userDto.toPlainObject(); // getFullName не включается в PlainObject, так как это метод