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

如何合并TypeScript interface定义与变量的默认值配置?

解决方案1:从默认值反向推导类型

先编写带默认值的初始对象,需要精确控制类型的字段通过 as 断言指定类型,再通过 typeof 直接推导得到Store类型,无需重复定义字段:

// 定义带默认值的初始对象
const storeDefault = {
  infinoteToken: null as string | null,
  allNotes: [] as Note[],
  // 其余字段直接写默认值,类型会自动推导
}

// 反向推导类型,无需手动写interface的字段声明
type Store = typeof storeDefault

export const store: Store = reactive(storeDefault)

解决方案2:用Class同时定义类型和默认值

如果你的store逻辑比较复杂,更推荐用Class实现,类的属性既可以声明类型,也可以直接赋值默认值,实例化后包裹reactive即可直接使用:

class Store {
  // 同时定义类型和默认值
  infinoteToken: string | null = null
  allNotes: Note[] = []
  // 还可以直接封装store相关的方法
  clearToken() {
    this.infinoteToken = null
  }
}

// 实例化后直接用reactive包裹,自动推导类型为Store
export const store = reactive(new Store())

两种方案都可以完全避免类型定义和默认值的字段重复声明,同时保留完整的TypeScript类型校验能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:07