变量定义为从不检查后的类型

时间:2018-05-14 20:53:58

标签: reactjs typescript

使用TypeScript,我在React组件上有一个可选的状态参数,即使在空检查后也会出现以下错误:

  

'never'类型中不存在属性'length'。

为什么static void Main(string[] args) { Combos(new [] { 1, 2, 3 }); } static void Combos(int[] arr) { for (var i = 0; i <= Math.Pow(2, arr.Length); i++) { Console.WriteLine(); var j = i; var idx = 0; do { if ((j & 1) == 1) Console.Write($"{arr[idx]} "); } while ((j >>= 1) > 0 && ++idx < arr.Length); } } 即使在items返回后也被推断为never类型?

!items

1 个答案:

答案 0 :(得分:0)

因此在考虑了更多和reading about the never type之后,我意识到将state属性初始化为undefined会导致编译器推断items未定义,因此,在null检查之后认为是代码无法到达。

TestState注释添加到类state属性中,而不是在items上设置state属性,我不再收到错误,items是在空检查之后按预期推断为类型{ id: string; name: string; }[]

class Test extends Component<TestProps, TestState> {
  state: TestState = {
  };

  // ...the rest of the class
}