[英]Create a type with the same nested keys as another type but all values are string
[英]Use type of values and make another object in the same structure but with string as values and also deep nesting
假设我们有一个这样的 TypeScript 类型:
type FormValues = {
name: string
organization: {
name: string
telephone: string
employees: number
}
}
基于这种类型,我想要一个 TypeScript 实用程序,它会产生以下类型:
type ErrorValues = {
name?: string
organization?: {
name?: string
telephone?: string
employees?: string
}
}
所以我可以有这样的事情:
const errors: ErrorUtility<FormValues>
console.log({ employeesError: errors?.organization.employees })
type ErrorUtility<T> = {
[K in keyof T]?: T[K] extends number | string | boolean ? string : ErrorUtility<T[K]>;
}
这说的是:
对于输入类型
T
中的任何键K
,结果类型中有一个键K
,因此该值是可选的,并且:
- 一个字符串,在原始值类型的情况下; 或者
- 本身是一个错误对象,递归地。
这是一个显示它正在使用的操场: https : //tsplay.dev/wXk3LW
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.