我创建了一个沙箱,详细说明了我遇到的错误here
type UnaryFn = <A, B>(x: A) => B;
const tryPipe = (...fns: UnaryFn[]) => (orDefault: UnaryFn) =>
// @ts-ignore
tryCatch(pipe(...fns), orDefault);
const ageTransformation = tryPipe(toUpper, append("."))((err: Error) => {
console.log(err, "ageTransformation failed");
return "USER.";
});
toUpper
抛出错误:
Argument of type '(str: string) => string' is not assignable to parameter of type 'UnaryFn'.
Types of parameters 'str' and 'x' are incompatible.
Type 'A' is not assignable to type 'string'.
据我所知,A
的值应推断为string
,同样,管道中每个函数的B
也应推断为。谁能向我解释为什么Typescript无法正确推断值类型,或者我是否误解了泛型。