使用相同的字段名称但类型不同的类型
Type for with same field names but different types
假设我有如下类型:
type Thing = {
aField: string;
anotherField: number;
// ...
}
我想制作一个 "mask" 类型,它具有所有相同的字段,但具有布尔值:
type ThingMask = {
aField: boolean;
anotherField: boolean;
// ...
}
有没有办法以编程方式执行此操作而无需对掩码类型进行硬编码?
是的,你想要一个 mapped type:
type ThingMask = { [K in keyof Thing]: boolean };
/* type ThingMask = {
aField: boolean;
anotherField: boolean;
} */
请注意,默认情况下,这还会将 readonly
和可选 (?
) 修饰符从原始类型复制到映射类型。如果你不希望这种情况发生,你可以使用 -readonly
或 -?
等修饰符来避免 alter this behavior。不过你没问这个我就不多说了。
希望对您有所帮助;祝你好运!
假设我有如下类型:
type Thing = {
aField: string;
anotherField: number;
// ...
}
我想制作一个 "mask" 类型,它具有所有相同的字段,但具有布尔值:
type ThingMask = {
aField: boolean;
anotherField: boolean;
// ...
}
有没有办法以编程方式执行此操作而无需对掩码类型进行硬编码?
是的,你想要一个 mapped type:
type ThingMask = { [K in keyof Thing]: boolean };
/* type ThingMask = {
aField: boolean;
anotherField: boolean;
} */
请注意,默认情况下,这还会将 readonly
和可选 (?
) 修饰符从原始类型复制到映射类型。如果你不希望这种情况发生,你可以使用 -readonly
或 -?
等修饰符来避免 alter this behavior。不过你没问这个我就不多说了。
希望对您有所帮助;祝你好运!