Nullcheck儿童链打字稿

时间:2019-02-17 01:25:34

标签: typescript null-check

使用严格的null检查非常棒,但这也会导致这种愚蠢:

if (x)
  if (x.y)
    if (x.y.z)
      if (x.y.z.stringProperty)
        console.log(x.y.z.stringProperty)

有没有一种方法可以重复执行此null检查?

谢谢!

1 个答案:

答案 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); 的实际结构来检查以字符串表示的路径,因此请输入断言。