我有这样的代码:
function (flavors: IceCreamFlavor): 'like'|'dislike' {
switch (flavors) {
case IceCreamFlavor.vanilla:
return 'dislike';
case IceCreamFlavor.chocolate:
return 'like';
}
}
这是详尽无遗的,我有一个eslint规则来确保详尽无遗。
对于eslint/typescript,我把consistent-return
规则设置为on,在这个过程中它会抱怨.我 * 不 * 想添加一个默认值(b/c如果我添加了一个新的冰淇淋口味,我希望开发人员必须处理它),但是consistent-return没有意识到这是详尽的,并且会抱怨.
你觉得我该怎么优雅地处理这件事?
4条答案
按热度按时间juzqafwq1#
好吧,我知道问题出在哪了。
consistent-return
来自eslint,它不知道类型,因此没有“修复”consistent-return的好方法来了解这一点。可能更好的方法是禁用
consistent-return
,然后使用typescript-lint的explicit-function-return-type
甚至no-unsafe-return
之类的。因为将整个代码库移到强类型函数中的代价会非常高,所以可以贡献一个tslint规则来执行
consistent-return
,它 * do * 知道类型,但是如果使用ts,可能只需要删除consistent-return.
sq1bmfud2#
你可以通过加上
never
return来表示穷尽。cig3rfwq3#
可能太晚了,以帮助操作,但对任何未来的读者:TS配置选项
noImplicitReturns
提供ESLint的consistent-returns
的所有优点,同时还支持穷举开关/等,因为它是类型感知的。供参考:
6ss1mwsb4#
我建议另一种方法: