typescript 定义对象键值类型的类型脚本与对象本身相同

1tuwyuhd  于 2023-02-17  发布在  TypeScript
关注(0)|答案(1)|浏览(169)

我为购物车项目和它的插件定义了一个通用类型。购物车项目和插件都有相同的键:

type iCart = {
  productId: string
  name: string
  description: string
  unitPrice: number
  netTotal: number
  quantity: number
  taxTotals?: { [key: string]: string }[]
  addons:[
   addonId: string
   name: string
   description: string
   unitPrice: number
   netTotal: number
   quantity: number
   taxTotals?: { [key: string]: string }[]
  ]
}

但是我想定义一个类型并使用它。尝试使用交集类型,但我不确定它是否正确:

export type iCartItem = {
  productId: string
  addonId:string
  name: string
  description: string
  unitPrice: number
  netTotal: number
  quantity: number
  taxTotals?: { [key: string]: string }[]
  period: iPeriod
}
type iCart = Omit<iCartItem, 'addonId'> & { addons?: Omit<iCartItem, 'productId'>[] }

在我看来这不太对,因为在IDE上悬停在type上时没有显示键。有没有更健壮的方法来做到这一点?

mqkwyuun

mqkwyuun1#

type iCart = {
  productId: string
  name: string
  description: string
  unitPrice: number
  netTotal: number
  quantity: number
  taxTotals?: { [key: string]: string }[]
  addons:[
   addonId: string
   name: string
   description: string
   unitPrice: number
   netTotal: number
   quantity: number
   taxTotals?: { [key: string]: string }[]
  ]
}

这段代码定义了你的自定义类型iCart,现在只需要使用它作为任何其他默认类型,例如:

const exampleICartObject: iCart = {
type iCart = {
  // Fill in the required properties
}

要获取字段建议:

type iCart = {
   /**
   * Enter description for productId field
   */
  productId: string
   /**
   * Enter description for name field
   */
  name: string
}

相关问题