Допустим, есть код такого вида:
class UserModel {
// Все те поля, что есть у UserDTO
password: string;
} // Модель User в БД.
class UserDTO {
email: string;
}
const getUser = async (email: string): Promise<UserDTO> => {
const user = await db.find(email); // Тип возращаемого объекта является UserModel
return user; // UserModel не эквивалентен UserDTO, но TypeScript не считает это ошибкой.
}
Как не допустить того, чтобы typescript позволял возвращать в качестве UserDTO эквивалентный этому типу объект, за исключением того, что у этого объекта есть так же дополнительные поля, не описанные в UserDTO.