Back to questions
Middle
3
TypeScript: что такое Omit и Pick? В чём разница между union и intersection типами? Что произойдёт если передать intersection тип в Omit?
Companies where asked
Evrone
Answer from AI
sobes.tech AI
В TypeScript:
- Pick<T, K> создаёт новый тип, выбирая из типа T только свойства с ключами K.
- Omit<T, K> создаёт новый тип, исключая из типа T свойства с ключами K.
Пример:
interface User {
id: number;
name: string;
age: number;
}
type UserName = Pick<User, 'name'>; // { name: string }
type UserWithoutAge = Omit<User, 'age'>; // { id: number; name: string; }
Разница между union и intersection типами:
- Union (|) — значение может быть одним из нескольких типов. Например,
string | number— это либо строка, либо число. - Intersection (&) — значение должно удовлетворять всем типам одновременно. Например,
A & B— объект, который имеет свойства и A, и B.
Если передать intersection тип в Omit, то Omit применится ко всему пересечению, то есть будут исключены свойства из каждого типа в пересечении. Но на практике это может привести к неожиданным результатам, так как пересечение требует наличия всех свойств, а Omit их убирает, что может сделать тип несовместимым.
Пример:
type A = { a: number; b: string; };
type B = { b: string; c: boolean; };
type AB = A & B; // { a: number; b: string; c: boolean; }
type Result = Omit<AB, 'b'>; // { a: number; c: boolean; }
Здесь свойство 'b' будет удалено из результата, так что Result — это тип с 'a' и 'c'.