Typescript 嵌套对象中返回类型的并集
我有一个TypeScript对象,它的属性包含另一个对象,而另一个对象都包含函数属性。i、 e.符合本接口要求:Typescript 嵌套对象中返回类型的并集,typescript,Typescript,我有一个TypeScript对象,它的属性包含另一个对象,而另一个对象都包含函数属性。i、 e.符合本接口要求: 接口对象函数{ [键:字符串]:函数; } 对象函数的接口对象{ [键:字符串]:ObjectOfFunction; } 我试图创建一个类型,它表示这些内部函数的所有返回类型的并集 我已通过以下方法使其在单个对象上工作: export-type PropertyReturnTypes=T[keyof T]扩展((a:any)=>any)?返回类型:从不; 但我不知道如何使它与最外
接口对象函数{
[键:字符串]:函数;
}
对象函数的接口对象{
[键:字符串]:ObjectOfFunction;
}
我试图创建一个类型,它表示这些内部函数的所有返回类型的并集
我已通过以下方法使其在单个对象上工作:
export-type PropertyReturnTypes=T[keyof T]扩展((a:any)=>any)?返回类型:从不;
但我不知道如何使它与最外层的对象(
ObjectOfObjectsOfFunctions
)一起工作。有人能帮我吗?如果您试图获取所有嵌套函数的返回类型,一级深度,您可以使用映射类型,使用objectofffunctions
类型获取每个嵌套对象的所有类型返回类型。然后,可以使用另一个索引操作获得所有这些类型的并集:
export type PropertyReturnTypes<T> = T[keyof T] extends ((a: any) => any) ? ReturnType<T[keyof T]> : never;
export type NestedPropertyReturnTypes<T> = {
[P in keyof T]: PropertyReturnTypes<T[P]>
}[keyof T];
type R = NestedPropertyReturnTypes<{
o: {
f1: () => "f1"
f2: () => "f2"
},
o2: {
f2: () => "f2"
f3: () => "f3"
},
}>
// Same as
// type R = "f1" | "f2" | "f3"
export-type PropertyReturnTypes=T[keyof T]扩展((a:any)=>any)?返回类型:从不;
导出类型NestedPropertyReturnTypes={
[P in keyof T]:PropertyReturnTypes
}[keyof T];
类型R=NestedPropertyReturnTypes“f1”
f2:()=>“f2”
},
氧气:{
f2:()=>“f2”
f3:()=>“f3”
},
}>
//同
//键入R=“f1”|“f2”|“f3”
如果您试图获取所有嵌套函数的返回类型(一级深度),则可以使用映射类型使用
objectofffunctions
类型获取每个嵌套对象的所有类型返回类型。然后,可以使用另一个索引操作获得所有这些类型的并集:
export type PropertyReturnTypes<T> = T[keyof T] extends ((a: any) => any) ? ReturnType<T[keyof T]> : never;
export type NestedPropertyReturnTypes<T> = {
[P in keyof T]: PropertyReturnTypes<T[P]>
}[keyof T];
type R = NestedPropertyReturnTypes<{
o: {
f1: () => "f1"
f2: () => "f2"
},
o2: {
f2: () => "f2"
f3: () => "f3"
},
}>
// Same as
// type R = "f1" | "f2" | "f3"
export-type PropertyReturnTypes=T[keyof T]扩展((a:any)=>any)?返回类型:从不;
导出类型NestedPropertyReturnTypes={
[P in keyof T]:PropertyReturnTypes
}[keyof T];
类型R=NestedPropertyReturnTypes“f1”
f2:()=>“f2”
},
氧气:{
f2:()=>“f2”
f3:()=>“f3”
},
}>
//同
//键入R=“f1”|“f2”|“f3”
您能为这个假设类型提供一个预期输出的使用示例吗?您能为这个假设类型提供一个预期输出的使用示例吗?太好了。非常感谢你!太好了。非常感谢你!