对象打字稿中的条件类型

Posted

技术标签:

【中文标题】对象打字稿中的条件类型【英文标题】:Conditional Type in Object Typescript 【发布时间】:2021-11-06 12:25:25 【问题描述】:
type OperationType = 'Insert' | 'Update' | 'Delete';

export type BaseModel<T extends Document> = 
  operationType:OperationType,
  properties: "Update" extends BaseModel<T>["operationType"]  ? UpdateProperties<T> : Properties<T>,
  model:Model<T>
  validation?:ValidateProp<T>

enter code here想代表Operation Type切换Property type但是不行...

【问题讨论】:

【参考方案1】:

为了观察operationType的具体类型,你需要像这样将它的类型指定为泛型:

export type BaseModel<T extends Document, O extends OperationType> = 
  operationType: O,
  properties: O extends 'Update' ? UpdateProperties<T> : Properties<T>,
  model: Model<T>
  validation?: ValidateProp<T>

【讨论】:

现在仍在工作如果我在对象中设置“更新”,我想要始终应用属性 我想严格地使用一种类型来代表操作类型如果 Operation = "Insert" 然后输入 apply Properties 或 Operation = "Update" 然后输入 apply UpdateProperties

以上是关于对象打字稿中的条件类型的主要内容,如果未能解决你的问题,请参考以下文章

打字稿中对象文字的类型安全合并

从打字稿中的对象获取特定类型的所有键[重复]

如何将方法的泛型类型限制为打字稿中的对象?

如何在打字稿中访问嵌套条件类型

打字稿中的重载函数类型

如何使用打字稿中的查找来推断类型化的 mapValues?