gpt4 book ai didi

Flowtype 不断需要空检查

转载 作者:行者123 更新时间:2023-12-04 02:06:52 24 4
gpt4 key购买 nike

我想知道如何避免这些大量的空检查,或者至少了解重点是什么,因为它似乎适得其反。

如果我省略空检查,Flowtype 会给我一个错误:

var myEl = new MyElement()
if (document.body != null) { // error on next line if omitted
document.body.appendChild(myEl)
}

我也必须在每个回调中对文档正文进行空检查,因为谁知道呢,也许正文在这里是空的,对吧?!
我认为这完全是矫枉过正。不仅如此,如此简单的空检查又有什么意义呢?它只会默默地跳过程序的重要部分,并在其他地方表现出未定义的行为,并使调试应用程序变得更加困难。
如果在这里发生错误,我真的更喜欢此时只有一个空异常,因为要真正确定我用javascript编写的这个微小的2行代码段在flowtype中必须是这样的:
var myEl = new MyElement()
if (document.body != null) {
document.body.appendChild(myEl)
} else {
console.error("null error")
}

所以 4 个额外的代码行和一些嵌套只是为了跟踪如果我让应用程序遇到错误我可以免费获得的东西。我需要在每个 querySelector 上使用这 4 行。在每一个 document.body 上。在每一个 getElementByTagName 上。仅此一项就可能使我的整个代码库增加 10%。
这么严格执行有什么意义?

在其他语言中,我也可以根据需要逐渐尝试捕捉这些热点,流程也不允许我这样做。无论我是否添加 try-catch,它都会显示错误。

最佳答案

当我确定我的变量不会为 null 而 Flow 不是时,我使用 unwrap() 函数:

export default function unwrap<T>(value: T): $NonMaybeType<T> {
if (value !== null && value !== undefined) return value
throw new Error('Unwrapping not possible because the variable is null or undefined!')
}

关于Flowtype 不断需要空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com