Typescript-声明变量但稍后分配的最佳方法是什么?

时间:2019-07-18 15:45:29

标签: reactjs typescript

我对Typescript有一个小问题,不确定如何解决此问题的最佳方法,并且我不想为Typescript编译器添加额外的逻辑,所以这是问题所在,这是针对反应应用程序:

let myVar: ComplexType;
let response;

useEffect(() => doApiCall());

if (loading) { 
  return <Spinner /> 
}

// from API
if (response) {
  myVar = response.value;
}

return (<MyComp data={myVar} />)

所以问题是我可以声明一个具有类型的变量并在以后分配它,编译器抱怨分配之前我正在使用它。

由于类型不匹配,我也不能分配null。

我试图将类型更改为'ComplexType | null”,但它抱怨我的组件由于null而没有采用该类型的prop。我也无法继续更改道具的类型,因为这会导致更多问题。

所以我对最好的方法有些困惑。

我发现,如果将包装好的组件返回一个if逻辑'if(myVar)',那么它可以工作,但是我感觉我正在添加额外的逻辑来满足编译器的要求。

大家如何处理?

我试图创建一个虚拟示例,以在下面展示我的问题:

interface MyType {
  a: string,
  b: number
}

let item: MyType;
let loading = true;

setTimeout(() => {
  loading = true;
  item = { a: 'test', b: 7 };
})

if (!loading) {
  doSomething(item);
}

function doSomething(x: MyType) {
  console.log(x);
}

0 个答案:

没有答案