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

TypeScript如何为单个变量(非对象)创建Interface类型定义

TypeScript 复用字面量联合类型实现方案

interface 本身的定位是描述对象、类的结构契约,不支持为单个字面量、联合类型这类非结构类型定义可复用的类型,要实现你要的效果,直接用 type 关键字声明类型别名即可,这也是TypeScript针对这类场景的标准推荐写法。

具体实现

在公共作用域或对应模块内一次性定义可复用的联合类型别名,后续所有需要用到该类型约束的场景直接引用别名即可,不需要重复书写联合成员:

// 一次性定义可复用的日期单位类型
type DateUnit = 'day' | 'week'

// 变量声明时直接引用类型
const date: DateUnit = 'day'
const otherDate: DateUnit = 'week'
// 赋值非法值时TS会直接抛出类型错误,例如下方代码就会触发校验报错
// const errorDate: DateUnit = 'month'

// 函数参数、返回值场景也可以直接复用该类型
function formatDate(unit: DateUnit, timestamp: number) {
  // 对应业务逻辑
}

补充说明

  • 类型别名和interface在对象类型定义场景下大部分可以互换,但涉及联合类型、字面量类型、基础类型别名、元组类型的复用时,类型别名是唯一的原生支持方案
  • 如果后续需要扩展联合类型的成员,直接修改DateUnit的定义即可,所有引用该类型的位置会自动同步类型校验规则,不需要逐个修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:01:15