TypeScript中能否定义二选一类型别名?如何避免类型重复书写?
在TypeScript中复用
number | Date联合类型的方法 当然可以,最直接的方式就是用TypeScript的**类型别名(Type Alias)**来定义这个联合类型,完全实现你想要的写法,彻底避免重复书写number | Date:
// 定义自定义联合类型 type NumberOrDate = number | Date; // 直接使用自定义类型作为函数返回值 function foo1(): NumberOrDate { return 123; } function foo2(): NumberOrDate { return new Date(); }
除了类型别名,还有几种遵循DRY原则的实现思路:
- 如果这类函数属于同一业务模块,可以把自定义类型和函数放在同一个文件/模块中,统一维护类型定义,避免分散修改;
- 如果你已经有一个变量是
number | Date类型,也可以通过typeof提取它的类型来复用:const exampleValue: number | Date = 456; type NumberOrDate = typeof exampleValue; function foo3(): NumberOrDate { return new Date(); } - 要是需要对这个联合类型做通用约束(比如后续扩展类型),可以把类型别名放在单独的类型定义文件中,供多个模块导入使用。
内容的提问来源于stack exchange,提问作者Steven Pauk
相关产品推荐
相关产品推荐

