我想基于另一个接口创建一个接口。
假设我有一个如下所示的数据接口:
interface SimpleData {
uid: number;
name: string;
email: string;
}
我想创建另一个接口来表示一个经过验证的 SimpleData
对象,如下所示:
interface ValidatedSimpleData {
uid: { value: SimpleData["uid"], error: boolean };
name: { value: SimpleData["name"], error: boolean };
email: { value: SimpleData["email"], error: boolean };
}
有没有办法根据ValidatedSimpleData
中定义的属性动态创建SimpleData
的属性?
答案 0 :(得分:1)
您通过 mapped types 执行此操作。
<块引用>映射类型是一种泛型类型,它使用通过 keyof 创建的联合来迭代一种类型的键以创建另一种类型:
interface SimpleData {
uid: number;
name: string;
email: string;
}
type Validated<T> = {
[K in keyof T]: {
value: T[K],
error: boolean
}
}
type ValidatedSimpleData = Validated<SimpleData>;