根据打字稿中其他已知的对象值缩小对象值的类型

时间:2019-06-14 03:28:32

标签: typescript

我正在尝试键入函数的返回值,因此,如果布尔值(在这种情况下为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

0 个答案:

没有答案