TypeScript · Middle · Запитання 51 з 75
Чому Omit<Circle | Square, 'id'> втрачає дискриміноване об'єднання?
type DistributiveOmit<T, K extends PropertyKey> = T extends any ? Omit<T, K> : never;- ✓Правильна відповідь:
Omitвикористовуєkeyofусього об'єднання (лише спільні ключі); дистрибутивна версія застосовує його до кожного члена - 2
Omitвзагалі не працює з об'єднаннями - 3Він видаляє
idлише з першого члена
Пояснення
keyof (A | B) містить лише спільні ключі, тож специфічні властивості зникають. Умовний тип розподіляється по об'єднанню.