在TypeScript中如何像定义interface那样定义可复用的自定义类型
TypeScript 字面量联合类型复用方案
你需要的复用效果完全可以实现,仅需修正类型别名的赋值语法即可:
你尝试的写法中误用了冒号作为类型赋值符号,TypeScript 中定义类型别名需要使用等号=,正确定义方式如下:
type State = "open" | "closed";
定义完成后即可在任意需要的位置直接复用该类型,完全符合你预期的使用方式:
function foo (state: State) { // 业务逻辑实现 }
拓展说明
- 该定义方式不仅支持字符串字面量联合类型,数字、布尔值字面量联合、甚至多类型混合的联合类型都可以通过
type关键字抽离复用 - 类型别名可以和interface互相组合使用,示例如下:
interface Store { id: number; name: string; currentStatus: State; }
- 你还可以基于已定义的类型别名拓展出更复杂的联合类型:
type AsyncState = State | "pending" | "error";
内容的提问来源于stack exchange,提问作者ramonchi
相关产品推荐
相关产品推荐

