【发布时间】:2020-12-14 17:12:03
【问题描述】:
我正在尝试制作一个自制的函数映射链。问题是,我想确保输入在映射链中保持一致。我的问题是我不知道怎么写f(x:T) => U
对于我正在尝试做的一个适当的例子:
function myChainer<T>(args:T){
return {
map:(innerFuction:(payload: T) => unknown){
return myChainer(innerFuction(args))
}
}
}
现在,如果我跑
myChainer(0)
.map((args1) => {
return doSomething(args1) ? "a" : "b"
})
.map((args2) => {
return doSomething2(args2) ? true : false
})
第一个map 会知道args1 的类型是Number,但第二个不会知道args2 的类型是string。而且,正如预期的那样,后续的链接函数不会知道它们各自参数的类型。 unknown 应该用什么替换,以便每个链接函数根据先前链接函数的返回类型确定其参数的类型?
【问题讨论】:
-
请分享可重现的代码
-
第二个泛型类型 U,没有在任何地方设置。应该在map方法上,所以内部函数可以是T => U:typescriptlang.org/play?#code/…。
-
@jonrsharpe 应该在哪里设置
U?我想将它设置在myChainer中的某个位置,以便所有新的映射函数都可以从前一个函数的返回值中推断出参数的类型
标签: typescript functional-programming