Microsoft/TypeScript

[exactOptionalPropertyTypes] Unexpected 'undefined' arises in error message

Open

#60.712 geöffnet am 7. Dez. 2024

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (6.726 Forks)batch import
BugDomain: flag: exactOptionalPropertyTypesHelp Wanted

Repository-Metriken

Stars
 (48.455 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

🔎 Search Terms

"not assignable", "never", "undefined", "exactOptionalPropertyTypes"

🕗 Version & Regression Information

4.3.5 'undefined' error instead of 'never' ; the value undefined is considered valid 4.4.4, 5.0.4 Expected behavior 5.1.6, 5.7.2 'undefined' error instead of 'never' ; the value undefined triggers the 'never' message Nightly not available when testing

⏯ Playground Link

https://www.typescriptlang.org/play/?exactOptionalPropertyTypes=true&ts=5.7.2#code/C4TwDgpgBAKlC8UCwAoKUDeUCGAuKAdgK4C2ARhAE4A0UZA-PgRAG5VQC+UAPqultkaFWVWmSakKlTgG5UqAMYB7AgGdgUYPjiIMfHPgAM1feKiHUHGUA

💻 Code

--exactOptionalPropertyTypes

type T = 
  { a: number, b?: never } |
  { a?: never, b: number };

const t: T = { //  Types of property 'b' are incompatible. Type 'number' is not assignable to type 'undefined'
  a: 0,
  b: 0
};

🙁 Actual behavior

Type 'number' is not assignable to type 'undefined' is not relevant, since undefined cannot be the type of the t[b].

🙂 Expected behavior

The error should be about type 'number' not being assignable to type 'never'. It is correctly displayed if the value undefined is used (after the regression at least).

Contributor Guide