microsoft / microsoft/TypeScript
Type error not indicated when spreading into a JSX component whose props type is defined as interface
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
Bug Report
🔎 Search Terms
react, component props, interface type, spread
🕗 Version & Regression Information
Bug present in 3.3.3 (oldest version available on Playground), as well as Nightly.
⏯ Playground Link
Playground link with relevant code
💻 Code
import * as React from 'react'
// Change interface to a type declaration and the bug disappears.
interface Props {}
// type Props = {}
// Change 'Props' => '{}' (ie. inline the type) and the bug disappears.
function Component(_: Props) {
return <div>C2</div>
}
export function Bug() {
const props = { opt: "1" } as const
// Should be a type error, since Component doesn't accept 'opt' prop
return <Component {...props} />
}
🙁 Actual behavior
No error is indicated.
Error is indicated correctly when interface is changed to a type declaration, or the type is inlined.
🙂 Expected behavior
TypeScript should indicate a type error since Component doesn't accept the 'opt' prop.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la reproducción enlazada en TypeScript Playground y compara la comprobación del spread de JSX cuando Props es una interface, un type alias o un inline type. Sigue la ruta de comprobación de tipos para la llamada a Component y verifica la corrección restaurando el error esperado para el opt prop adicional, mientras conservas los demás casos.
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
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 35/100