我有一个TypeScript对象,其属性包含另一个都包含函数属性的对象。也就是说,它符合以下接口:
min_A max_A Bs
<-10 1.4.2019 1.6.2019 [-15, -20, -30]
>=-10 <=10 1.2.2019 1.3.2019 [5, 6]
>10 1.1.2019 1.8.2019 [11, 12, 20]
我正在尝试创建一个类型,以表示这些内部函数的所有返回类型的并集。
使用以下方法,我设法使其适用于单个对象:
interface ObjectOfFunctions {
[key: string]: Function;
}
interface ObjectOfObjectsOfFunctions {
[key: string]: ObjectOfFunctions;
}
但是我不知道如何使它与最外面的对象(export type PropertyReturnTypes<T> = T[keyof T] extends ((a: any) => any) ? ReturnType<T[keyof T]> : never;
)一起使用。有人可以帮我吗?
答案 0 :(得分:2)
如果您试图获取所有嵌套函数的返回类型(更深一层),则可以使用映射类型来使用ObjectOfFunctions
类型获取每个嵌套对象的所有类型返回类型。然后,您可以使用另一个索引操作来获得所有这些类型的并集:
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"