typescript - 带有对象和数组的树的 Typescript 递归映射类型
问题描述
我有一个具有以下 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
但是,这对数组不起作用。如何更新我的映射类型以支持数组?
解决方案
推荐阅读
- reactjs - 使用 axios 将 2 个不同的 api 连接到一个反应应用程序
- javascript - 仅使用单词从数组中删除项目
- docker - 如果挂载的文件已更改,如何强制 Ansible 重新创建 docker 容器
- javascript - 在 vuejs 中迭代数组数组
- java - 当我使用 ddl-auto=create 时,JPA/hibernate 没有生成其中一个表
- python - pandas.read_sql_query() 抛出 TypeError: 'NoneType' object is not iterable
- php - 在 php7.2 中绑定 PDO 变量不起作用
- google-sheets - 在一个选项卡中识别字符串,在另一个选项卡中使用字符串数据传播字符串
- sql-server - Azure 分析服务 - 增量刷新
- angular - 角路由不使用哈希不工作