microsoft / microsoft/TypeScript

Error from `exactOptionalPropertyTypes` not reported when using object spread with a ternary and optional property acces

Aperta
#63,240 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Bug Domain: flag: exactOptionalPropertyTypes
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

### 🔎 Search Terms

exactOptionalPropertyTypes
object spread
ternary

### 🕗 Version & Regression Information

- This is the behavior in every version I tried, and I reviewed the FAQ for entries about exactOptionalPropertyTypes, object spread.

### ⏯ Playground Link

https://www.typescriptlang.org/play/?exactOptionalPropertyTypes=true&ts=5.9.3&ssl=5&ssc=32&pln=1&pc=1#code/C4TwDgpgBAYg9nKBeKBvAUFKYCGAnCAO2AEkATAfgC4oBnYPAS0IHN0BfddMiAYwBt80XnEL0oBAI4BXCPQBCcMiBrw4Abi78IwKMHwsdqhJvQB6M3QAWcAO60oEAB6RewCGUd48cPFDKyeogAok44bgDyYMCMojj8AAo+kHigACrgcuj6eIa6KKjYQsTkNFKyCkogAHS4BCWe7KYWUAC2jLS0zCxePn62VkRQ0l2sdGAEOJ44hJ7ueIT4INkGOshoUNVbABQMgRQbdUSkZGUQMnLAisq1xSdQ7FA0qOwAlA-qUC3yAKoA4lwRGJdIUjg0HutypdriBNDk8utCltqrs8PtDndSkV6vdHs83h8sF9LL8AeZLBBvL4oDgwJB8A4RN4+MB+CAoIwAGZQABu8UCHSghDguhw2GSlNANN4vDktA8UE5PlaNMIUDgACMAFYs9BA8Rgk4AJnWAHJTTSHPQmGMAD7DWYQTnMDxw1b5DbI1Ho0GY07Y47kE14tAEproIA

### 💻 Code

```ts
type Foo = {
parentId?: string
}

declare const requestBody: Foo;

let target: Foo;

// shows expected error due to ExactOptionalPropertyTypes
target = { parentId: requestBody.parentId };

// missing error when using spread and ternary
target = { ...(true ? { parentId: requestBody.parentId } : {}) }; // BUG

const { parentId } = requestBody;
target = { ...(true ? { parentId: parentId } : {}) }; // BUG

// error appears correctly if value is not a property accessed from an object
const parentId2 = '' as string | undefined;
target = { ...(true ? { parentId: parentId2 } : {}) };

```

### 🙁 Actual behavior

The expected error is silenced only in the specific case that combines object spread, ternary, and accessing an optional property from an object, although the types are always recognized correctly with `| undefined`.

### 🙂 Expected behavior

All scenarios demonstrated in the code snippet are expected to show the same error.

### Additional information about the issue

_No response_

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con il TypeScript Playground collegato ed esegui la riproduzione di exactOptionalPropertyTypes. Confronta i casi di assegnazione diretta, ternario con object spread, proprietà destrutturata e variabile locale; l’issue è conclusa quando i casi di spread e ternario riportano lo stesso errore previsto degli altri scenari.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
compilers
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.