相关疑难解决方法(0)

Typescript:如何创建类型的副本但更改属性类型

我想为一个对象创建两种类型。对象本身的类型和验证错误的类型。这两种类型将具有相同的属性名称,但属性将具有不同的类型。

type Person = {
  name: string,
  age: number,
  married: boolean
}

type PersonValidationError = {
  name?: string,
  age?: string,
  married?: string
}

Run Code Online (Sandbox Code Playgroud)

在用户填写构建对象的表单后,Person我想通过一些验证来运行它,如果出现错误,我想创建错误对象,该对象将在相应的属性中包含错误消息。有没有一种方法可以将其PersonValidationErrorPerson类型本身联系起来,这样当我添加更多属性时,Person我就不必担心它们不同步。

我的第一个想法是使用keyof

type PersonValidationError = {
  [prop: keyof Person]: string
}
Run Code Online (Sandbox Code Playgroud)

但据我了解,这是无效的,keyof不能在索引签名中使用。

我也知道PersonValidationError它的所有属性都标记为可选,但如果我无法更改道具的要求,那也没关系,因为我总是可以将其包装在Partial<>

types typescript

5
推荐指数
1
解决办法
5465
查看次数

标签 统计

types ×1

typescript ×1