🔎 Search Terms
boolean invariant type parameter literal widen union
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
https://www.typescriptlang.org/play/?ts=5.7.0-dev.20240824&ssl=14&ssc=130&pln=1&pc=1#code/PTAECEHsA8B4BUB8oAuBPADgU1ASwM54B2AbgIYBOuZRKxo8AsAFAvrYQwLIC8oA3i1CgA5lhQAuUAAoAlKB7J4AbiGh84qdPIAbAK5Yp8eYtAlIuACarmAXxstLWAMY7KOAGZ6izlLkhEoABGXEjaZPqGDLJSUHBIDszOAfh0QUQAjArBMNL8oBgUkBhSAAygtrLKoCCccPmFxVJEegC2QVgUFYgsyUSpwUQATLFcDUUloC3tnd3ZIdB5BRNlFVU1YADyANYsvSlpQVl8C0uNkx4RGmvVtXGw4005kDpYNN37-YcjdQ-LTyEXm9ArZeDlFo8LlccJVbmAAKIUIoUAA04L+5yklx011BU0gdDI+HwuBERDIQVeqEgv0hUkBr3eoJYQA
💻 Code
// Box<T> type is invariant in TtypeBox<T>={get: ()=>T;set: (value: T)=>void;};declarefunctionbox<T>(value: T): Box<T>;constbn1=box({prop: 0});// Box<{ prop: number }>constbn2: Box<{prop: number}>=box({prop: 0});// Okconstbb1=box({prop: false});// Box<{ prop: boolean }>constbb2: Box<{prop: boolean}>=box({prop: false});// Error, box<{ prop: false }> not assignable to Box<{ prop: boolean }>🙁 Actual behavior
Error on bb2 is surprising and inconsistent with lack of error on bn2.
🙂 Expected behavior
Expected the box(false) expression to have type Box<boolean> for both bb1 and bb2.
Additional information about the issue
This issue is a small variation of #48363 that was fixed by Anders Hejlsberg (@ahejlsberg) in #48380
🔎 Search Terms
boolean invariant type parameter literal widen union
🕗 Version & Regression Information
⏯ Playground Link
https://www.typescriptlang.org/play/?ts=5.7.0-dev.20240824&ssl=14&ssc=130&pln=1&pc=1#code/PTAECEHsA8B4BUB8oAuBPADgU1ASwM54B2AbgIYBOuZRKxo8AsAFAvrYQwLIC8oA3i1CgA5lhQAuUAAoAlKB7J4AbiGh84qdPIAbAK5Yp8eYtAlIuACarmAXxstLWAMY7KOAGZ6izlLkhEoABGXEjaZPqGDLJSUHBIDszOAfh0QUQAjArBMNL8oBgUkBhSAAygtrLKoCCccPmFxVJEegC2QVgUFYgsyUSpwUQATLFcDUUloC3tnd3ZIdB5BRNlFVU1YADyANYsvSlpQVl8C0uNkx4RGmvVtXGw4005kDpYNN37-YcjdQ-LTyEXm9ArZeDlFo8LlccJVbmAAKIUIoUAA04L+5yklx011BU0gdDI+HwuBERDIQVeqEgv0hUkBr3eoJYQA
💻 Code
🙁 Actual behavior
Error on
bb2is surprising and inconsistent with lack of error onbn2.🙂 Expected behavior
Expected the
box(false)expression to have typeBox<boolean>for bothbb1andbb2.Additional information about the issue
This issue is a small variation of #48363 that was fixed by Anders Hejlsberg (@ahejlsberg) in #48380