gpt4 book ai didi

flowtype - 流: why does it complain about string being null/undefined?

转载 作者:行者123 更新时间:2023-12-03 22:12:56 25 4
gpt4 key购买 nike

我仍在尝试掌握 Flow 的工作原理,任何人都可以解释为什么这个简单的示例会引发错误?

function say(text: string) {
console.log(text);
}

say('Hello World!'); // This is alright

const text: ?string = 'Hello World!';
say(text); // Error:(219, 5) Cannot call `say` with `text` bound to `text` because null or undefined [1] is incompatible with string [2].

我知道,文本变量可以为空,但是当我调用 say(text) 时,它显然不是空的。

最佳答案

Flow 不会跟踪您分配的内容。它只跟踪变量的类型。而您正在尝试传递类型 ?stringstring , 这不是一个有效的赋值,因为它可能是 null .您知道它不为空,但 flow 不为空,因为它实际上并没有执行您的代码。

很难为您提供解决方法的好建议,因为 const text: ?string = 'Hello World!';是一个非常人为的例子,但你可以使用 refinement只调用say如果 text已针对非空值进行了测试。

const text: ?string = 'Hello World!';
if (text) {
say(text);
}

唯一的时间流确实跟踪您分配的内容是隐式类型的变量初始化。但这只是将右 watch 达式的类型分配为变量的类型。
let a: ?string = 'foo'
let b = a; // flow infers the type of b as ?string

关于flowtype - 流: why does it complain about string being null/undefined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52878706/

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