I defined following function.
const createAction = <I,O>(input: I, conditionFn: (_: I) => boolean, converter: (_: I) => O, restoreFn: (_: O) => any) => {
if(conditionFn(input)){
const converted = converter(input);
return restoreFn(converted);
}
return undefined;
};
I want to use this function as follows.
const conditionAge = (age: number | undefined): age is number => typeof age === 'number';
const convertAge = (age: number) => age + '';
const setAge = (age: number) => {
return {
type: 'SET_AGE',
payload: age
}
};
// mock
const createAge = (value: number, isEmpty: boolean): number | undefined => isEmpty ? undefined : value;
const result = createAction(createAge(33), conditionAge, convertAge, setAge);
// Argument of type 'number | undefined' is not assignable to parameter of type 'number'.
But compile error occurred.
I think generics I
is not match.
Is there any idea for this issue ??
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…