与功能请求相关的@angular/*包有哪些?
common
描述
我认为如果@switch
被检查为详尽,那么它将是模板类型安全的很好的补充。
目前,如果你有一个字段有3种可能的值:
type UserType = 'admin' | 'logged' | 'anonymous'
然后在模板中使用一个@switch
:
@switch (userType) {
@case ('admin') {
Hello admin
}
@case ('logged') {
Hello user
}
}
模板编译得很好,而'anonymous'
的情况没有被覆盖。
建议的解决方案
如果缺少一个情况(当然没有提供默认值),那就太好了能得到一个编译错误。
TypeScript会在函数中使用switch返回值时抱怨缺少一个case:
function s(userType: UserType): boolean {
switch (userType) {
case 'admin': return true;
case 'logged': return true;
}
}
生成的TCB可能是沿着这些思路编写的代码,而不是一个“简单”的switch?
考虑过的替代方案
我认为我们不能轻易地解决这个问题吗?
7条答案
按热度按时间laawzig21#
在这里也做一个评论:我个人希望看到这个功能,但我希望有需要不完全的开关的情况,在这种情况下,你不想让这个报告错误。
也许有一个空的
@default {}
块就足够表示了吗?qlckcl4x2#
是的,我也这么想。
也许@jessicajaniuk正在进行的迁移可以将非详尽的交换机迁移到:
以表示在不破坏现有应用程序的情况下需要完成一些工作。
gxwragnw3#
这里有两点:
@default
或者@default never
也可以工作。up9lanfz4#
在团队中讨论过,我们可能想在某个时候将其作为功能添加进来,但目前不将其视为优先事项。
cgfeq70w5#
当前的解决方法:
考虑模型:
我们可以创建一个组件:
使用方式:
如果我们遗漏了一个情况,它将抛出一个编译错误:
de90aj5v6#
与NgSwitch相关的议题:#49089
hs1rzwqc7#
你好,希望你找到ngx-exhaustive-check包很有帮助: