在下面的示例中(或在flow.org/try上),當我們通過另一個變量檢查null/undefined時,類型細化似乎不起作用。如果通過另一個可行的方法檢查null/undefined,則流類型細化不起作用
type Position = {|
x: number,
y: number
|}
function anotherCondition(): bool{
return true;
}
function getIt(): ?Position{
return {x:7, y: 8}
}
function setIt(p:Position){
}
const pos = getIt();
const isOk = pos && anotherCondition();
isOk && setIt(pos)
但是,如果我們這樣做是沒有內嵌變量isOk
,它工作正常。但我有幾個地方來檢查這種情況,並使用像isOk
這樣的變量使其不那麼冗長。有什麼辦法可以使它工作嗎?或者我在這裏錯過了什麼?
我希望它是可選的。這只是一個例子。在實際情況中,有些情況下'getIt'也可能返回null。 –
我已經添加了一個替代方案,您可以對我的回答進行操作 – MichaelDeBoey
問題在於流程的細化算法往往難以預測,如OP示例中所示。 – ftor