Microsoft/TypeScript

`satisfies` changes the generic type, "resolves" it immediately

Open

#52 394 ouverte le 24 janv. 2023

Voir sur GitHub
 (12 commentaires) (0 réactions) (0 assignés)TypeScript (6 726 forks)batch import
BugDomain: check: Type InferenceHelp Wanted

Métriques du dépôt

Stars
 (48 455 stars)
Métriques de merge PR
 (Merge moyen 6j 17h) (9 PRs mergées en 30 j)

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
}

Playground link

🔎 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

Playground link

🙁 Actual behavior

a and b have different types as seen in the playground

🙂 Expected behavior

satisfies should be a no-op

Guide contributeur