kripod / kripod/react-polymorphic-box
Incorrect work with Unions Types
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 347
- Forks
- 14
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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">'
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, die im Issue gezeigte TypeScript-Reproduktion mit der Box-Komponente und den vereinigten Test-Props zu kompilieren. Vergleiche die von Test direkt akzeptierten Props mit denen, die über Box akzeptiert werden; die Arbeit ist abgeschlossen, wenn die Verwendung von Box value="b" und extra="extra" mit korrekten TypeScript-Typen akzeptiert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- react, typescript
- Bereich
- frontend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100