tdesign-react
Version:
TDesign Component for React
10 lines (9 loc) • 540 B
TypeScript
export interface ChangeHandler<T, P extends any[]> {
(value: T, ...args: P): any;
}
type DefaultOptions<T extends string> = `default${Capitalize<T>}`;
type ToString<T extends string | number | symbol> = T extends string ? T : `${Extract<T, number>}`;
declare const useControlled: <P extends any[], R extends object, K extends keyof R>(props: R, valueKey: K, onChange: ChangeHandler<R[K], P>, defaultOptions?: {
[key in DefaultOptions<ToString<K>>]: R[K];
} | object) => [R[K], ChangeHandler<R[K], P>];
export default useControlled;