TypeScript 能强制函数必须返回两种类型吗?

2022-05-31 23:32:39 +08:00
 iqoo

比如 type X = string | number ,如果定义函数返回类型是 X ,那么只要是 string 或 number 其中一个就可以。

如果想让函数两种类型都必须有返回(不同的分支返回不同的类型),是否有其他办法?

2441 次点击
所在节点    程序员
21 条回复
qbqbqbqb
2022-06-02 11:58:16 +08:00
这个需求在 TypeScript 里其实不好做。因为 ts 里有一种 literal type 的东西。比如你的例子里的 c 函数,如果不手动指定返回类型的话,你以为编译器推断出的类型是 string|number ,结果其实是"hello"|123 ,也是一种比 string|number 更窄的类型,那它该不该报错呢? 按照你的需求应该是不报错,但是按照 ts 的类型系统"hello"|123 和 number 都是 extends string|number ,并不好区分。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/856580

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX