Closed
Description
TypeScript Version: typescript@3.4.0-dev.20190330
Search Terms: Conditional NonNullable Type
Code
type ConditionalType<T> = T extends string ? string : number ;
function ConditionalOrUndefined<T>() : ConditionalType<T> | undefined {
return 0 as any;
}
function JustConditional<T>() : ConditionalType<T> {
return ConditionalOrUndefined<T>()!; // Type 'NonNullable<ConditionalType<T>>' is not assignable to type 'ConditionalType<T>'
}
// For comparison...
function genericOrUndefined<T>() : T | undefined {
return 0 as any;
}
function JustGeneric<T>(): T {
return genericOrUndefined<T>()!; // no error
}
Expected behavior:
JustConditional compiles without errors, like JustGeneric.
Actual behavior:
JustConditional produces error Type 'NonNullable<ConditionalType<T>>' is not assignable to type 'ConditionalType<T>'
Related Issues:
It looks like NonNullable has had similar issues with other complex types:
#23849
#27456