Typescript:如何创建类型的副本,但更改属性类型
我想为一个对象创建两种类型。对象本身的类型和验证错误的类型。这两种类型的属性名称相同,但属性的类型不同Typescript:如何创建类型的副本,但更改属性类型,typescript,types,Typescript,Types,我想为一个对象创建两种类型。对象本身的类型和验证错误的类型。这两种类型的属性名称相同,但属性的类型不同 type Person = { name: string, age: number, married: boolean } type PersonValidationError = { name?: string, age?: string, married?: string } 在用户填写表单构造Person对象后,我想对其进行一些验证,如果有错误,我想创建错误
type Person = {
name: string,
age: number,
married: boolean
}
type PersonValidationError = {
name?: string,
age?: string,
married?: string
}
在用户填写表单构造Person
对象后,我想对其进行一些验证,如果有错误,我想创建错误对象,该对象将在相应的属性中包含错误消息。有没有一种方法可以将PersonValidationError
与Person
类型本身联系起来,这样当我向Person
添加更多属性时,就不必担心它们不同步了
我的第一个想法是使用keyof
type PersonValidationError = {
[prop: keyof Person]: string
}
但这是无效的,据我所知,keyof
不能用于索引签名
另外,我知道PersonValidationError
的所有属性都标记为可选,但是如果我不能更改道具的要求,那么它就可以了,因为我总是可以用部分来包装它;它看起来类似于索引签名,但在
关键字中使用了:
type PersonValidationError = { [K in keyof Person]?: string }
?
使属性成为可选属性。希望有帮助;祝你好运
使用a;它看起来类似于索引签名,但在
关键字中使用了:
type PersonValidationError = { [K in keyof Person]?: string }
?
使属性成为可选属性。希望有帮助;祝你好运