我有一棵具有以下Typescript类型的状态树:
type StateTree = {
foo: {
id: number,
name: string,
createdAt: Date
},
bar: {
items: Array<{id: number, name: string}>
},
baz: {
count: number,
isVisible: boolean,
children: Array<Array<number, number>>
}
}
我需要在这棵树上运行验证功能。该树的返回类型应反映StateTree
的形状,但每个最终值应为错误消息(字符串),如下所示:
type Errors = {
foo: {
id: string,
name: string,
createdAt: string
},
bar: {
items: Array<{id: string, name: string}>
},
baz: {
count: string,
isVisible: string,
children: Array<Array<string, string>>
}
}
我目前有一个映射类型可以尝试执行此操作,因为真实状态树要大得多。下面是我的映射类型:
type ValidationErrors<T> = T extends object ? {
[Key in keyof T]: ValidationErrors<T[Key]>
} : string
但是,这对数组不起作用。如何更新映射类型以支持数组?