Microsoft/TypeScript
Voir sur GitHubswitch (typeof something) isn't seen as exhaustive
Open
#56 786 ouverte le 14 déc. 2023
Domain: check: Control FlowHelp WantedPossible Improvement
Métriques du dépôt
- Stars
- (48 455 stars)
- Métriques de merge PR
- (Merge moyen 6j 17h) (9 PRs mergées en 30 j)
Description
🔎 Search Terms
- typeof
- switch
- narrow
- type guard
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about Type Guards
⏯ Playground Link
💻 Code
function checkAll<T>(something: T): T {
switch (typeof something) {
case "number":
case "bigint":
case "boolean":
case "symbol":
case "undefined":
case "function":
case "object":
case "string":
return something;
}
}
🙁 Actual behavior
This emits the TS error: "Function lacks ending return statement and return type does not include 'undefined'.(2366)"
🙂 Expected behavior
No error, since all possible results of typeof are handled.
Additional information about the issue
It seems to only be an issue when the function argument is generic. It works if I switch the return type and parameter types to any, but I'm not sure that's a fair comparison.