Open
Description
Bug Report
It seems that using satisfies
on a value that is bound to a generic type, in some way resolves the generic type at that place.
const foo = <T extends 1 | 2>(bar: T) => {
// PROBLEM: a and b should have the same type.
const a = bar satisfies any; // using any type that doesn't use the generic T here creates this problem
// ^? 1 | 2
const b = bar;
// ^? T extends 1 | 2
}
🔎 Search Terms
satisfies
changes type, generic, widening
🕗 Version & Regression Information
Using 4.9.4 now with satisfies
and noticed this.
- This changed between versions 4.9 and 4.8 when satisfies was introduced
- This is the behavior in every version I tried, and I reviewed the FAQ
- I was unable to test this on prior versions because satisfies didn't exist
⏯ Playground Link
🙁 Actual behavior
a
and b
have different types as seen in the playground
🙂 Expected behavior
satisfies
should be a no-op