问一个typescript类型问题?
给定一条数据结构(API数组里面的个数是未知的)如下所示
const api = [ {
name: 'pageA',
table: true
},
{
name: 'pageB',
}
]
如何推导出类似这样的类型
type Result = { pageA: boolean
pageB: unknown
}
即 name 作为key, 如果存在table即为boolean类型,否则为unknown类型
ts的大神们,这个该如何写啊,百度,谷歌都折腾了,还问了gpt也不行,就是值推不出来
我写的是这样的
const api = [ {
name: 'pageList',
table: true
},
{
name: 'pageAdd',
table: false
}
] as const;
type Ret<T extends readonly { name: string; table?: boolean }[]> = {
[K in T[number]['name']]: // 这里不会写
};
type Api = Ret<typeof api>;
回答:
const api = [ {
name: 'pageList',
table: true,
},
{
name: 'pageAdd',
},
] as const;
type Ret<T extends readonly {name: string; table?: boolean}[]> = {
[K in T[number]['name']]: Extract<T[number], {name: K}> extends {
table: boolean;
}
? boolean
: unknown;
};
type Api = Ret<typeof api>;
以上是 问一个typescript类型问题? 的全部内容, 来源链接: utcz.com/p/935000.html