You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript 接口(interface)能否使用枚举形式定义多个同类型键?

结论

你给出的简写形式不符合 TypeScript 语法规则,无法正常使用。

原因说明

你尝试使用的[priceRetail, priceWholesale, priceDiscount]: Price写法不属于 TypeScript 支持的合法语法,TS 的索引签名原生不支持直接罗列多个字面量键来批量定义属性类型,直接书写会触发语法报错。

正确的简写方案

可以通过 TypeScript 内置的工具类型或者映射类型实现相同的批量定义效果,最终生成的类型和你原有的逐行定义的Product接口完全等价:

  • 使用Record工具类型(最简洁)
    type Product = Record<'priceRetail' | 'priceWholesale' | 'priceDiscount', Price>
    
  • 使用映射类型自定义
    type Product = {
      [Key in 'priceRetail' | 'priceWholesale' | 'priceDiscount']: Price
    }
    
  • 如果必须使用interface关键字而非type定义,可以用继承的方式实现
    interface Product extends Record<'priceRetail' | 'priceWholesale' | 'priceDiscount', Price> {}
    

内容的提问来源于stack exchange,提问作者tvanbeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:06:02