使用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
答案 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
}