我有一个现有的Typescript接口,如下所示:
interface Person {
name: string;
age: number;
pet: string;
}
另一种方法(不受我的控制(要求输入将每个值放置在对象中,{value: value}
如下所示:
update({
name: {value: "string"},
age: {value: 0},
pet: {value: "dog"}
})
有没有办法扩展或利用我现有的Person
界面来创建新的type
或interface
以匹配所需的格式?
这样的事情会起作用:
interface Person {
name: string;
age: number;
pet: string;
}
type AwkwardPerson = {
[K in keyof Person]: { value: Person[K] }
}
let newTyped: AwkwardPerson = {
name: {value: "string"},
age: {value: 0},
pet: {value: "dog"}
}
我们迭代人的键,并给出具有正确类型的所需形状。
如果你有很多需要转换的接口,你可以像这样制作一个通用转换器(而不是重复自己(:
type MakeAwkward<T> = {
[key in keyof T]: { value: T[key] }
}
type GenericAwkwardPerson = MakeAwkward<Person>
let genericTyped: GenericAwkwardPerson = {
name: {value: "string"},
age: {value: 0},
pet: {value: "dog"}
}
您提供给MakeAwkward的任何接口<>在尖括号内都将转换为兼容类型。