typer - Hvordan få TypeScript generisk begrensning til å gjelde for en funksjonsdefinisjon?
Jeg har følgende Preact/React-komponent:
export interface ListItem {
disabled?: boolean;
}
export interface MyCompProps<T extends ListItem> {
value: T;
}
export function MyComp<T>(props: MyCompProps<T>) {
const { value } = props;
// ERROR - Property 'disabled' does not exist on type 'T'.
value.disabled;
return (
<div>
{value.disabled ? 'True' : 'False'}
</div>
);
}
Siden T oppfyller kravene for MyCompProps<T>, burde ikke value av typen T inkludere et felt med navnet disabled? Også, hvis jeg endrer følgende kode, fungerer det:
export function MyComp<T extends ListItem>(props: MyCompProps<T>) { return (/* ... */); }
Men å gjøre dette undergraver poenget med å erklære begrensning på grensesnittnivå?