【发布时间】:2020-09-11 23:20:57
【问题描述】:
我怀疑这个答案是否定的,但如果你不问,你就不会得到。
假设您有一个字符串文字的联合,并且您希望确保字符串文字中的每个条目至少使用一次。考虑:
type MyEvents = 'User clicks button' | 'User opens menu' | 'User eats pizza'
假设我们非常关心上述每种类型的使用。如果没有使用上述所有内容,则意味着我们没有捕获我们需要的信息。它表示错误状态。
如果编译器可以告诉我们是否没有使用上述之一,那不是很神奇吗?有点像--noUnusedLocals 让您知道您有一个未使用的局部变量或noUnusedParameters 告诉您有一个您没有使用的参数。
这可能吗?
编辑
更具体一点,我是在整个程序的上下文中想象的。
// file1.ts
// ...
trackThatThing('User clicks button')
// ...
// file2.ts
// ...
trackThatThing('User eats pizza')
// ...
会导致错误:“'用户打开菜单'类型未使用”或类似的。鉴于:
// file1.ts
// ...
trackThatThing('User clicks button')
// ...
// file2.ts
// ...
trackThatThing('User opens menu')
// ...
// file3.ts
// ...
trackThatThing('User eats pizza')
// ...
会好的
【问题讨论】:
-
您的意思是
switch还是什么(在这种情况下,请参见例如stackoverflow.com/q/39419170/3001761)?或者只是在你的代码库中? -
一般在代码库中 - 所以如果一个类型没有在整个程序的上下文中使用,它将被视为错误
-
@JohnReilly 不,有
noUnused*标志来覆盖这个 -
你想要pattern matching,希望很快就会出现。 F# examples
-
...这有可能在未来理解exhaustive pattern matching。
标签: typescript