TypeScript Version: 3.0.0-dev.20180609 & 2.9.1
Search Terms:
Narrowing unique symbol union
Code
declareconstphantom: unique symbol;typePhantom=typeofphantom;typePhantomString=string&Phantom;constfn=(arg?: PhantomString)=>arg;constfn2=(arg: Array<PhantomString|null>)=>arg;
Expected behavior:
fn and fn2 should be reported as:
constfn: (arg?: PhantomString)=>PhantomString|undefined;constfn2: (arg: Array<PhantomString|null>)=>Array<PhantomString|null>;
Actual behavior:
fn and fn2 are reported as:
constfn: (arg?: undefined)=>undefined;constfn2: (arg: null[])=>null[];
Playground Link:
https://www.typescriptlang.org/play/#src=declare%20const%20phantom%3A%20unique%20symbol%3B%0D%0Atype%20Phantom%20%3D%20typeof%20phantom%3B%0D%0Atype%20PhantomString%20%3D%20string%20%26%20Phantom%3B%0D%0A%0D%0Aconst%20fn%20%3D%20(arg%3F%3A%20PhantomString)%20%3D%3E%20arg%3B%0D%0A%0D%0Aconst%20fn2%20%3D%20(arg%3A%20Array%3CPhantomString%20%7C%20null%3E)%20%3D%3E%20arg%3B
Appears to be partially related to strictNullChecks
TypeScript Version: 3.0.0-dev.20180609 & 2.9.1
Search Terms:
Narrowing unique symbol union
Code
Expected behavior:
fnandfn2should be reported as:Actual behavior:
fnandfn2are reported as:Playground Link:
https://www.typescriptlang.org/play/#src=declare%20const%20phantom%3A%20unique%20symbol%3B%0D%0Atype%20Phantom%20%3D%20typeof%20phantom%3B%0D%0Atype%20PhantomString%20%3D%20string%20%26%20Phantom%3B%0D%0A%0D%0Aconst%20fn%20%3D%20(arg%3F%3A%20PhantomString)%20%3D%3E%20arg%3B%0D%0A%0D%0Aconst%20fn2%20%3D%20(arg%3A%20Array%3CPhantomString%20%7C%20null%3E)%20%3D%3E%20arg%3B
Appears to be partially related to
strictNullChecks