在TypeScript中,有没有一种安全的方式来编写axiosResult.data.attendeeResults.username

时间:2019-02-06 02:13:07

标签: typescript undefined

除非出现严重错误,否则我希望我所引用的JavaScript对象是这样的:

axiosResult.data.attendeeResults.username

中将包含真实数据。即,定义了data,定义了attendeeResults,并且定义了username。如果其中任何一个未定义,我希望整个express安静地返回undefined且没有错误。

如何在TypeScript中执行此操作?甚至只是EcmaScript 6?

2 个答案:

答案 0 :(得分:1)

建议将?运算符添加到javascript中,以实现与axiosResult?.data?.attendeeResults?.username相同的用例,以便仅在LHS不是未定义或为null的情况下才读取该属性。否则返回undefined

在打字稿中,从文档中,您可以使用axiosResult!.data!.attendeeResults!.username来获取[https://github.com/Microsoft/TypeScript/wiki/What的新TypeScript#non-null-assertion-operator]。

答案 1 :(得分:0)

一种解决方案是使用non null assertion operator official doc

摘自TypeScript官方发行说明:

function processEntity(e?: Entity) {
    validateEntity(e);
    let s = e!.name;  // Assert that e is non-null and access name
}

根据您的情况,您可以对axiosResult.data进行检查:

axiosResult.data!.attendeeResults!.username