microsoft / microsoft/TypeScript

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

Abierto
#63,240 1 comentario 0 reacciones 0 asignados Ver en GitHub
Bug Domain: flag: exactOptionalPropertyTypes
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 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_

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza con el TypeScript Playground enlazado y ejecuta la reproducción de exactOptionalPropertyTypes. Compara los casos de asignación directa, ternario con propagación de objeto, propiedad desestructurada y variable local; el issue está terminado cuando los casos de propagación y ternario informen del mismo error esperado que los demás escenarios.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
compilers
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.