Microsoft/TypeScript

[exactOptionalPropertyTypes] Unexpected 'undefined' arises in error message

Ouverte

#60 712 ouverte le 7 déc. 2024

 (1 commentaire) (0 réaction) (0 personne assignée)TypeScript (13 395 forks)batch import
BugDomain: flag: exactOptionalPropertyTypesHelp Wanted

Métriques du dépôt

Stars
 (108 860 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

🔎 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).

Guide contributeur