Closed
Description
the following is seen in typescript@3.4.0-dev.20190131:
declare function onlyNullablePlease<T extends (null extends T ? any : never)>(value: T): void;
declare var z: string | null;
onlyNullablePlease(z); // works as expected
declare var y: string;
onlyNullablePlease(y); // error as expected
function f<T>(t: T) {
var x: T | null = Math.random() > 0.5 ? null : t;
onlyNullablePlease(x); // should work, unexpected error:
/*
Argument of type 'T | null' is not assignable to parameter of type 'null extends T | null ? any : never'.
Type 'null' is not assignable to type 'null extends T | null ? any : never'.ts(2345)
*/
}