使用严格的null检查非常棒,但这也会导致这种愚蠢:
if (x)
if (x.y)
if (x.y.z)
if (x.y.z.stringProperty)
console.log(x.y.z.stringProperty)
有没有一种方法可以重复执行此null检查?
谢谢!
答案 0 :(得分:1)
处理此类情况的常用方法是使用类似myList = ([[1,5], [10, 20], [1, 6], [16,19], [5,11]])
def sumIntervals(inputList):
output = []
for keyIndex in range(len(inputList)):
for keyDifference in range(inputList[keyIndex][0], inputList[keyIndex][1]):
output.append(keyDifference)
output = set(output)
print(len(output))
sumIntervals(myList)
(有时称为Maybe
)的抽象。使用示例:
Option
作为替代方案,可以使用更简洁的内容,例如dlv
。
import { Option } from 'space-lift';
Option(input)
.map(input => input.x)
.map(x => x.y)
.map(y => y.z)
.map(z => z.stringProperty)
.forEach(console.log);
尽管由于其紧凑的特性,它看起来可能更具吸引力,但该解决方案永远不会是类型安全的。不能对照console.log(dlv(input, ['x.y.z.stringProperty']) as string);
的实际结构来检查以字符串表示的路径,因此请输入断言。