问一个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

回到顶部