reactjs - Poate un parametru de funcție de tip dinamic să fie extins?
Este aceasta o posibilitate (și dacă da, cum)?
type extendedValues = { name: string };
type Props<T> {
values: T & extendedValues ?
}
const ReactFuncComponent = <T extends Props<T>>({ values }: Props<T>) => {
...
}
Deci, practic vreau să spun că poți să treci un obiect care conține orice câmpuri cu orice valori, dar trebuie să includă și un nume de tip string:
<ReactFuncComponent values={{ age: 0, name: '' }} />
Răspuns #1
Dacă am înțeles corect întrebarea ta, poți realiza ceea ce vrei în felul următor:
interface Credentials {
name: string;
}
type ExtendedValues<T> = Credentials & T;
type Props<T> = {
value: ExtendedValues<T>
}
const TestComponent = <T, >(props: Props<T>) => {
return <p>Some text here</p>
};
// Example of usage
<TestComponent value={{name: "Name"}} /> // Will be OK
<TestComponent value={{name: "Name", age: 25}} /> // Will be OK
<TestComponent value={{age: 25}} /> // Error: property 'name' is missing