type Item =
| { type: 'link' | 'text'; data: string }
| { type: 'anotherType'; }
Я могу как-то достать тип точечно для 'link'? Пробовал делать так
type LinkItem = Extract<Item, { type: 'link' }>
но ts отдаёт 'never' из-за того что там не просто type: 'link', а type: 'link' | 'text'`
Item & { type: 'link' }
type Item = | { type: 'link' | 'text'; data: string } | { type: 'anotherType'; }; type ExtractWithCondition<T, Condition> = T extends Condition ? T : never; type LinkItem = ExtractWithCondition<Item, { type: 'link'; data: string }>; const item: LinkItem = { type: 'link', data: "some data" };
это не работает же
так там же type 'link' | 'text' а не просто 'link', поэтому extract и не работает
вот это вроде сработало, но пока ещё разбираюсь, спасиб)
type Item = | { type: 'link' | 'text'; data: string } | { type: 'anotherType'; } type LinkItem = Item extends { type: infer T, data: string } ? (T extends 'link' ? Item : never) : never; const linkExample: LinkItem = { type: 'link', data: "https://example.com" };
Обсуждают сегодня