-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
DuplicateAn existing issue was already createdAn existing issue was already created
Description
TypeScript Version:
nightly (1.9.0-dev.20160217) + strictNullChecks
Code
type Easing = 'ease-in' | 'ease-out' | 'ease-in-out';
function getEasingFunction(easing: Easing): (val: number) => number {
switch (easing) {
case 'ease-in': return t => t * t;
case 'ease-out': return t => t * (2-t);
case 'ease-in-out': return t => t<0.5 ? (2*t*t) : -1+(4-2*t)*t;
}
// `easing` should be of type `never` here
// however the actual type is `'ease-in' | 'ease-out' | 'ease-in-out'`
}Expected behavior:
After an exhaustive switch the switched variable should be of type never as per #9163. Conversely, if the switch is not exhaustive and the return type does not accomodate for undefined, an error should be issued.
Actual behavior:
String literal union types are not narrowed thus an error is always issued.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
DuplicateAn existing issue was already createdAn existing issue was already created