You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionfoo(someString: string|undefined){switch(true){casesomeString!==undefined:
// this line is broken// it requires !non null assertion even though I've checked it abovereturnsomeString.toUpperCase()default:
return'some default value'}}
Expanded reproduction
// broken functionfunctionfoo(isSomething: boolean,someString: string|undefined){switch(true){caseisSomething:
return'is something'casesomeString!==undefined:
// this line is broken// it requires !non null assertion even though I've checked it abovereturnsomeString.toUpperCase()default:
return'some default value'}}// does the same staff as `foo` but has different implementationfunctionbar(isSomething: boolean,someString: string|undefined){if(isSomething){return'is something'}if(someString!==undefined){returnsomeString.toUpperCase()}return'some default value'}// ensure that the implementations are equivalent([[true,undefined],[false,undefined],[true,'asd'],[false,'asd']]).forEach(([isSomething,someString]: any)=>console.assert(foo(isSomething,someString)===bar(isSomething,someString),'test feild for',isSomething,someString))
Expected behavior:
Compile just fine
Actual behavior:
Throws
(parameter) someString: string | undefined
Object is possibly 'undefined'.(2532)
TypeScript Version: 3.7.x-dev.201xxxxx
Code
Minimal reproduction
Expanded reproduction
Expected behavior:
Compile just fine
Actual behavior:
Throws
for
Playground Link:
https://www.typescriptlang.org/play/#code/PTAECMCcHsGsFMB2oBmBXRBjALgS2ogFDpZ4GrTQAUuAzgMrQC282AFrogOYBcElAG3gBDRABpQtZvHrZInXpLkLQAH1AYAJvBSd4mgJSgA3oVDnJAd1zZMbUFTlp4R46DMXPmYbXig6jCzsCjwenuGgkKxokMgA5HSS0sHccYRh4d6+SSyy8tygAIQAvMUaiNq6iPqhEREgoMG0oAJ6-s1QcEgZdaANNpHwAI5ouFHNhYjkiGgCAqA+vpBkyPAAbkiNbNBoXPYAknEboHbwmAia-tgL4NAbPXVR2DHIUrnK3AB02NAAqgAO-3gkAAwj54FQDOlepVhLNsLVehYni9QHE3n5YfDQGthAJnGlPABfQgkwgNTTQeDNdh+WjCFhKYQoFALZoAAxQlHZEDQ1zYPlAmlwLOBSGuuCY-yELEQ2GEK2IGBw+GQ4GEkBoDGSHG4fFu0CEogkGLyISU+S4anKlT0hhMGRFDgCOoUrge5hRsTRiQxKS4hIsZM8Tqopo+VpKZS0Ojt7t6Xte0jNXx+AKBoPBkIyZIyibRGKFOjhAmuuPx8DSZIaSFoMT87AVWz8kul8Fl8pWzQ1fmGo3L4sIVAA2sOnPAJDGqvoALoSYcoPG+ScVWPVTRz0BjyDOCRxHyaOKbhdLidog9HmdQzyfLmQACiwjsVBHLqCuq4JuTEZnfFEAE8jGKAA+D0TgIKQhE+RZgWwKgwM8LlqDfVgPy-d5LSA0oIA1LVAlQhR0JkCMDDEBCLDibBqWuFB4FwARLjvOIJBQ-0iJTLgwOvCwoUIIA
The text was updated successfully, but these errors were encountered: