我正在尝试键入函数的返回值,因此,如果布尔值(在这种情况下为loading
)是false
,则返回的其余对象都是已知的。如果加载为true
,则对象的其余部分为undefined
。我尝试了以下方法:
const someFun = ():
| { loading: true; output: undefined }
| { loading: false; output: string } => {
const loading = Math.random() >= 0.5
if (loading) {
return { loading, output: undefined }
}
return { loading, output: 'hello world' }
}
const { loading, output } = someFun()
if (!loading) {
console.log(output)
}
我试图指出if (!loading)
output
内是一个字符串。但是,现在打字稿认为此时output
可能是string | undefined
。有没有一种方法可以将其设置为使if块内的输出始终只是string
?