我有一个对象Map包含id
和name
的其他对象。
我需要从id
中获取name
类型。
我的尝试是:
const obj = {
foo: { id: 1, name: 'one' },
bar: { id: 2, name: 'two', },
baz: { id: 3, name: 'three' },
} as const
type Obj = typeof obj;
type ValueOf<T> = T[keyof T];
type Ids = ValueOf<Obj>['id'];
type GetName<T extends Ids> = (ValueOf<Obj> & { id: T })['name']
type Foo = GetName<1>
但是Foo
是"one" | "two" | "three"
,而我期望的是"one"
。
如何解决呢?
1条答案
按热度按时间nukf8bse1#
通过
Extract
对杆件求交,而不是将它们与{ id: T }
相交:Playground