【发布时间】:2021-09-20 11:50:45
【问题描述】:
我有一个函数接受另一个函数作为参数。参数是联合类型的函数,也可能有参数,也可能没有参数。
type innerFn = () => void | (arg: string) => void | (arg: number) => void | (arg: {}) => void
function mainFn (innerFn: InnerFnType) {
function run(arg?: *any*) {
innerFn()
}
return run
}
我想知道 run 参数是否可以根据传递给 mainFn 的函数来继承。
用例是:
const concreteInnerFn: InnerFnType = (arg: string) {
do something
}
const run = mainFn(concreteInnerFn)
run("hello") // OK
run(25) // ERROR
run({hello: true}) // ERROR
即如果我使用(arg: string) => void 作为innerFn,当我尝试使用run() 时,它应该要求输入字符串类型的参数。
希望它足够清楚
【问题讨论】:
标签: typescript type-inference typescript-generics