Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistent boolean literal types in objects #59754

Open
Andarist opened this issue Aug 26, 2024 · 1 comment Β· May be fixed by #59898
Open

Inconsistent boolean literal types in objects #59754

Andarist opened this issue Aug 26, 2024 · 1 comment Β· May be fixed by #59898
Labels
Bug A bug in TypeScript Help Wanted You can do this
Milestone

Comments

@Andarist
Copy link
Contributor

πŸ”Ž 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 T

type Box<T> = {
  get: () => T;
  set: (value: T) => void;
};

declare function box<T>(value: T): Box<T>;

const bn1 = box({ prop: 0 }); // Box<{ prop: number }>
const bn2: Box<{ prop: number }> = box({ prop: 0 }); // Ok

const bb1 = box({ prop: false }); // Box<{ prop: boolean }>
const bb2: 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 @ahejlsberg in #48380

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug A bug in TypeScript Help Wanted You can do this
Projects
None yet
3 participants
@RyanCavanaugh @Andarist and others