You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Type of heterogeneous enum value can't be inferred correctly when used in object literal #33439
constenumHeterogeneous{Foo=1,Bar='zzz',}vara1: string=Heterogeneous.Bar;// <= OK. no error.vara2: {name: string}={name: Heterogeneous.Bar};// <= Type 'Heterogeneous' is not assignable to type 'string'.varb1: Heterogeneous=Heterogeneous.Bar;// Type of 'b1' is 'Heterogeneous'.varb2={name: b1};// Type of 'b2' is still inferred as '{name: Heterogeneous.Bar;}'varb3: {name: string}={name: b1};// OK. 'Heterogeneous.Bar' is assignable to 'string'.
Expected behavior:
no error. Actual behavior:
var a2: {name: string} = {name: Constants.Bar}; // <= Type 'Constants' is not assignable to type 'string'.ts(2322)
I often use a heterogeneous const enum as a constant provider, for compile time optimizing.
Specifying the string type literal explicitly will work, like:
var a2: {name: string} = {name: <string>Heterogeneous.Bar};
changed the title [-]Type of heterogeneous enum value can't be infered when used in object literal[/-][+]Type of heterogeneous enum value can't be inferred correctly when used in object literal[/+]on Sep 15, 2019
Activity
[-]Type of heterogeneous enum value can't be infered when used in object literal[/-][+]Type of heterogeneous enum value can't be inferred correctly when used in object literal[/+]