typescript - 为什么 Typescript 无法根据枚举 switch 语句推断出正确的类型?
问题描述
enum Test {
one,
two,
}
const play = (n: Test) => {
switch (n) {
case Test.one:
return 'hello';
case Test.two:
return {};
default:
exhaustive(n);
throw new Error('hi');
}
};
const b = play(Test.one);
//
console.log(b);
有人可以帮我理解为什么 Typescript 不能推断出返回类型play(Test.one)
是字符串而不是对象吗?另外,如果我能做些什么来让它发挥作用,我也很想知道。
打字稿 3.9.4
解决方案
原因是每个返回值都有不同的类型,一个返回一个字符串,一个返回一个对象,一个返回一个错误。这样 linter 将选择作为对象的基类
推荐阅读
- c# - C# 中 8 个条件的模式匹配:File.Exists 返回 false,但文件确实存在
- r - 解释密度尺度 geom_density
- reactjs - React 路由和 Express 路由
- reactjs - React Child 组件不会更新道具
- c# - C#如何获取一个月中的“灰色”天日期时间
- javascript - Javascript 正则表达式 matchAll 函数不起作用
- javascript - 无法使用自定义角度指令禁用按钮
- python - Heroku 和 Postgres 的 Flask SQLAlchemy 错误 (psycopg2.errors.DatatypeMismatch)
- python-3.x - BeautifulSoup 中的 find_all() 返回空的 ResultSet
- javascript - 如何将图像保存到 sqlite 数据库中?