注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
以下是处理从访问属性或链接时可能返回的未定义
值的两种有用模式。
Copied!1 2 3 4 5 6 7 8 9
@Function() public getFullName(employee: Employee): string { // 检查员工的名字和姓氏是否都存在,如果不存在则抛出错误 if (!(employee.firstName && employee.lastName)) { throw new UserFacingError("Cannot derive full name because either first or last name is undefined."); } // 返回员工的全名,由名字和姓氏组成,中间用空格隔开 return employee.firstName + " " + employee.lastName; }
通过检查 firstName
和 lastName
字段是否已定义,TypeScript 编译器可以确认带有 return
语句的最后一行能够正确编译。这种方法的好处是类型检查更加明确,并且在存在 undefined
值的情况下,可以抛出更明确的错误,说明出现了什么问题。
你可以使用 TypeScript 的 非空断言操作符 ↗ (!
) 来忽略 undefined
的情况。
Copied!1 2 3 4 5
@Function() public getFullName(employee: Employee): string { // 返回员工的全名,通过连接firstName和lastName属性 return employee.firstName! + " " + employee.lastName!; }
这种方法只是重写了TypeScript编译器,并断言您访问的字段是已定义的。尽管这使代码更加简洁,但如果其中一个字段被证明是undefined
,这可能会导致难以理解的出错。我们建议在可能的情况下进行显式检查。