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
typeS={x: 'abc'}functionf<TextendsS>(){constx: {[kinT['x']]: number}={abc: 1}// EPC error, for any imaginable keyconsty: {[kinT['x']]: number}={}// ...but this is also a (correct!) type error}
π Actual behavior
EPC diagnostic on any non-empty object literal, but {} is also not assignable.
π Expected behavior
No EPC diagnostic; should just be a straight assignability failure.
Additional information about the issue
Producing an EPC (excess property check) error for any non-empty object literal here is misleading since that ultimately implies {} would be a legal value (it is not). 5.3 exacerbates this because it removes the "X is not assignable to Y" text from EPC diagnostics, which further implies that the value would be legal if assigned indirectly (also not true; the type is generic and might have other properties).
The text was updated successfully, but these errors were encountered:
btw w.r.t. the issue template: Can there be a Summary field above Search Terms, so people stop trying to put the bug description into Search Terms? (tbh I almost made the same mistake--it's a bit confusing when you click the search terms box and it expands to a full-featured multiline field, especially since there's no designated place for a summary)
fatcerberus
changed the title
Misleading EPC error on deferred generic type for any property
Misleading EPC error on deferred generic type when assigning any object literal, hut empty object is also not assignable
Nov 14, 2023
fatcerberus
changed the title
Misleading EPC error on deferred generic type when assigning any object literal, hut empty object is also not assignable
Misleading EPC error on deferred generic type when assigning any object literal, but empty object is also not assignable
Nov 14, 2023
π Search Terms
N/A (bug report forked from #56388)
π Version & Regression Information
β― Playground Link
https://www.typescriptlang.org/play?#code/C4TwDgpgBAylC8UDeAPAXFA5AQwEYGNMBfAKADMBXAO32AEsB7KqMgHgBUoIVgIqATAM6wAfAAoAlMhJQo+JoOBR0yANoBrKHWbtVmFJgC6hjFQoBbXBABORBMjz4MARjsB6N1ACiABQDCXNbWDNYANCwhUNhUIFrm2ADm2ngANtDqECAycgpKIBhIGlo6egbGphZWtvZI7p7yQRC0UKCQgcHWJKRAA
π» Code
π Actual behavior
EPC diagnostic on any non-empty object literal, but
{}
is also not assignable.π Expected behavior
No EPC diagnostic; should just be a straight assignability failure.
Additional information about the issue
Producing an EPC (excess property check) error for any non-empty object literal here is misleading since that ultimately implies
{}
would be a legal value (it is not). 5.3 exacerbates this because it removes the "X is not assignable to Y" text from EPC diagnostics, which further implies that the value would be legal if assigned indirectly (also not true; the type is generic and might have other properties).The text was updated successfully, but these errors were encountered: