Wil*_*iao 14 typescript eslint typescript-eslint
我有这样的代码:
function (flavors: IceCreamFlavor): 'like'|'dislike' {
switch (flavors) {
case IceCreamFlavor.vanilla:
return 'dislike';
case IceCreamFlavor.chocolate:
return 'like';
}
}
Run Code Online (Sandbox Code Playgroud)
这是详尽的,我有一个 eslint 规则来确保详尽。
对于 eslint / typescript,我将consistent-return规则切换为打开,在此期间会抱怨。我不想添加默认值(b/c,如果我添加新的冰淇淋口味,我希望开发人员必须处理它),但一致性返回并没有意识到这是详尽无遗的,并且会抱怨。
关于如何优雅地处理这个问题有什么想法吗?
Wil*_*iao 11
好吧,我通过我的问题找到了问题所在。
consistent-return来自 eslint,它不知道类型,因此没有很好的方法来“修复”一致返回来了解这一点。
可能更好的方法是禁用consistent-return然后使用typescript-lint或explicit-function-return-type什至no-unsafe-return类似的东西。
因为将整个代码库转移到强类型函数的成本确实很高,所以您可以贡献一个 tslint 规则来了解类型consistent-return,但如果您使用 ts,您可能只想删除consistent-return.
您可以通过添加neverreturn 来表示详尽性。
function (flavors: IceCreamFlavor): 'like'|'dislike' {
switch (flavors) {
case IceCreamFlavor.vanilla:
return 'dislike';
case IceCreamFlavor.chocolate:
return 'like';
}
const _exhaustiveCheck: never = flavors;
return _exhaustiveCheck;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2573 次 |
| 最近记录: |