Скажем, у меня есть интерфейс:Поддерживает ли TypScript «типы подмножества»?
interface IUser {
email: string;
id: number;
phone: string;
};
Тогда у меня есть функция, которая ожидает подмножества (или полное совпадение) этого типа. Может быть, он пройдет целый объект, заставив его просто пройти в {email: "[email protected]"}
. Я хочу, чтобы контролер типа позволял обоим.
Пример:
function updateUser(user: IUser) {
// Update a "subset" of user attributes:
$http.put("https://stackoverflow.com/users/update", user);
}
Поддерживает ли Машинопись такое поведение еще? Я мог бы найти его очень полезным, особенно с такими парадигмами, как Redux.
Для уточнения, цель:
- Избегайте переписывания интерфейса и настройки вручную все атрибуты необязательны.
- Избегайте назначения неожиданных атрибутов (например, орфографических ошибок).
- Избегайте императивной логики, такой как
if
заявления, которые лишаются преимуществ проверки типа времени компиляции.
UPDATE: Машинопись объявила о поддержке mapped types, который должен решить эту проблему раз опубликования.
не 'Partial', что вы ищете? –
Их не было, когда я задал вопрос. Я добавил ссылку позже, после того, как они были добавлены в TS. – Rick