大佬教程收集整理的这篇文章主要介绍了如果未定义,则平面图为嵌套做标记糖,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有几个函数接受一个数字和额外的参数,返回一个数字或未定义。 我想顺序调用这些函数,并处理好路径的最终值。
如何避免嵌套 if 语句,如以下代码?
export function addPositive(num: number): number | undefined {
if (num > 0) {
return num + 2;
}
}
let four = addPositive(3)
if (four) {
let five = addPositive(four);
if (fivE) {
let six = addPositive(fivE);
console.log(siX);
}
}
也许可以使用 generator functions 来模拟 do-notation; Stack Overflow 上还有其他问题,例如 this one 您可以咨询是否真的需要这些问题。但我认为很难正确输入(您希望编译器知道 yield
中的 let five = yield ap(four)
具有将 number | undefined
变成 {{ 1}},我没有看到明显的方法)。就算能做到,也显得相当的重量级。
在这种特殊情况下,我宁愿将 number
检查滚动到 undefined
的实现中,以便它既接受又返回 addPositive()
。例如:
number | undefined
现在您可以将每次调用的结果作为下一次调用的参数传递,而不必求助于生成器之类的东西:
function ap(num: number | undefined) {
return num ? addPositive(num) : undefined;
}
如果您需要使用不同的函数而不仅仅是let four = ap(3)
let five = ap(four);
let six = ap(fivE);
console.log(siX); // 9
,那么您可以制作一个转换器,将 addPositive()
形式的函数转换为 (x: T) => T | undefined
形式之一{1}}:
(x: T | undefined) => T | undefined
然后上面的const def = <T,>(cb: (x: T) => T | undefined) =>
(x: T | undefined) =>
typeof x === "undefined" ? undefined : cb(X);
函数就是
ap
行为方式相同:
let ap = def(addPositivE);
Playground link to code
以上是大佬教程为你收集整理的如果未定义,则平面图为嵌套做标记糖全部内容,希望文章能够帮你解决如果未定义,则平面图为嵌套做标记糖所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。