【发布时间】:2018-09-03 13:55:35
【问题描述】:
我有一个名为conditional 的函数,它接收一个布尔值和一个函数,如果布尔值为真则返回该函数,否则返回一个虚拟函数。
function conditional(x, f) {
if(x)
return f
else
return () => {}
}
所以,我可以执行如下代码:
let mySqrt = conditional(true, Math.sqrt)
let add = (x, y) => x + y
let myAdd = conditional(true, add)
但是,当我向条件函数添加类型时,提供给conditional 函数的函数的类型签名会丢失。这使得编写 mySqrt("a") 这样的代码成为可能,而不会出现 TypeScript 抱怨。
如何向条件函数添加类型以保留结果函数的类型?
【问题讨论】:
标签: javascript typescript types functional-programming typescript2.0