type GenericElement<T> = {
set: Setter<T>;
state: T;
}
type Setter<T> = (state: T) => void
type GenericElements = Array< GenericElement<string> | GenericElement<number>>
const genericElements = [{
set: (state: string) => console.log(state),
state: 'stateValue'
}, {
set: (state: number) => console.log(state),
state: 123
}]
genericElements.map(({set, state}) => set(state))
// ---------------------------------------|
/**
* Argument of type 'string | number' is not assignable to parameter of type 'never'.
* Type 'string' is not assignable to type 'never'.(2345)
*/
Example on TS playground
Is it possible to implement it without this issue, or how to lead proposed structure to be abble to hanlde it set(state)
in common way without boilerplates like perform this operation for each child manually or overcodes like [() => set1(state1), () => setN(stateN)]
?