确保TypeScript的最佳方法是使用Apollo将this.props.data设为非null?

时间:2017-12-02 17:49:06

标签: typescript apollo

我检查this.props.data.loading,如果已经完成(并且没有错误),那么我想直接使用this.props.data。但是,TS告诉我它可能是实现Apollo类型的方式的空b / c。

每次避免需要写这样的东西的最佳方法是什么?

(this.props.data as any).myData.foobar

例如,如果它为null(我永远不应该),我可以抛出。但这是一个令人讨厌的解决方案,因为如果我有很多地方根据数据是否加载而呈现不同的地方,那么这个代码就会到处都是。

if (!this.props.data) { throw new Error("Data is null!"); }

阿波罗相当新,我认为这是一个相当基本的问题。

1 个答案:

答案 0 :(得分:1)

非空断言运算符 !看起来会完全符合我的要求。

this.props.data!.myData.foobar

Documented in TypeScript 2.0.

(感谢thisthis SO答案。)