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

TypeScript开发中如何避免类型重复定义的问题?

你可以用TypeScript提供的typeof类型操作符直接提取已有变量的类型,完全不需要额外重复定义interface。

基础用法

直接基于你已经定义的options变量提取类型,后续所有需要用到该类型的地方直接复用即可:

// 仅定义一次options,TS自动完成类型推断
const options = {
    foo: 'bar',
    foo1: 'bar1',
    foo2: 'bar2',
    // 更多属性
}

// 直接提取options的类型生成别名,不需要手动写任何属性定义
type OptionsType = typeof options

const someFn1 = (options: OptionsType) => {
    console.log(options.foo)
}

const someFn2 = (options: OptionsType) => {
    console.log(options.foo1)
}

后续如果修改options的结构,OptionsType会自动同步更新,不需要手动维护类型定义,完全避免重复编码。

精确字面量类型适配

如果你需要提取的是精确的字面量类型(比如要求foo的类型是固定值'bar'而非宽泛的string),可以搭配as const断言使用:

const options = {
    foo: 'bar',
    foo1: 'bar1'
} as const

// 此时OptionsType的foo类型为字面量'bar',foo1类型为字面量'bar1'
type OptionsType = typeof options

适用场景区分

  • 如果你的类型是优先定义的标准规范,需要多个不同的变量/参数符合该规范,优先使用interface/type手动定义类型
  • 如果已经存在一个基准变量,仅需要复用它的类型,直接用typeof提取是最优解,属于TypeScript官方支持的标准用法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:36:04