kripod / kripod/react-polymorphic-box
Incorrect work with Unions Types
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- TypeScript
- Estrellas
- 347
- Forks
- 14
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
Description
Polymorphic box has partialized props if "as" component has unioned props.
Reproduction
import React from 'react';
import { Box } from 'react-polymorphic-box';
interface ITestA {
value: 'a';
}
interface ITestB {
value: 'b';
extra: string;
}
type Test = ITestA | ITestB;
const Test: React.FC<Test> = (props) => {
return <></>;
};
function App() {
return (
<>
<Test value="b" extra="extra" />
<Box as={Test} value="b" extra="extra" />
</>
);
}
Expected behavior
Polymorphic box has correct props types.
Actual behavior
Type '{ as: FC<Test>; value: "b"; extra: string; }' is not assignable to type 'IntrinsicAttributes & BoxOwnProps<FC<Test>> & Pick<PropsWithChildren<Test>, "value" | "children">'. Property 'extra' does not exist on type 'IntrinsicAttributes & BoxOwnProps<FC<Test>> & Pick<PropsWithChildren<Test>, "value" | "children">'
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 compilando la reproducción de TypeScript mostrada en el issue usando el componente Box y las props unificadas de Test. Compara las props aceptadas directamente por Test con las aceptadas a través de Box; el trabajo estará terminado cuando el uso de Box acepte value="b" y extra="extra" con los tipos correctos de TypeScript.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- react, typescript
- Área
- frontend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100