Допустим, у меня есть интерфейс:
interface IUser {
email: string;
id: number;
phone: string;
};
Затем у меня есть функция, которая ожидает подмножество (или полное совпадение) этого типа. Может быть, он пропустит весь объект, а просто передаст {email: "[email protected]"}
. Я хочу, чтобы проверка типов позволила им обоим.
Пример:
function updateUser(user: IUser) {
// Update a "subset" of user attributes:
$http.put("/users/update", user);
}
Поддерживает ли Typescript такого рода поведение? Я мог бы найти это очень полезным, особенно с такими парадигмами, как Redux.
Чтобы уточнить, цель:
- Избегайте переписывания интерфейса и ручной настройки всех атрибутов на необязательные.
- Избегайте присвоения неожиданных атрибутов (таких как орфографические ошибки).
- Избегайте императивной логики, такой как оператор
if
, которая лишается преимуществ проверки типов времени компиляции.
ОБНОВЛЕНИЕ: Typescript объявил о поддержке отображаемых типов, которые должны решить эту проблему после публикации.