gpt4 book ai didi

javascript - 检查组合链内的字段是否未定义

转载 作者:行者123 更新时间:2023-12-02 23:56:09 26 4
gpt4 key购买 nike

假设我们有以下声明:

interface Inf1 {
field: boolean | undefined;
}

interface Inf2 {
field: Inf1 | undefined
}

interface Inf3 {
field: Inf2 | undefined
}

function fun1(): Inf3 | undefined {
return {field: {field: {field: true}}};
}

我想检查 fun1() 返回的对象中的第三个嵌套字段是否等于 true (或任何其他值)。第一次尝试是:

if (value.field.field.field) {
console.log('This code does not compile because nested `field` objects may be undefined.');
}

什么会导致编译错误,因为中间的字段可能是未定义

编译此代码时我需要做的是检查所有嵌套对象是否未定义:

let value = fun1();
if (
value &&
value.field &&
value.field.field &&
value.field.field.field
) {
console.log('This code is compiled successfully');
}

有没有办法“即时”检查中间的那些“字段”是否未定义?

最佳答案

JavaScript 中不存在您需要的功能,因此,是的,您必须通过这种测试来保护您的代码:

if (value && value.field && value.field.field)

使用 strict (或 strictNullCheck)选项,TypeScript 可以帮助您思考每个潜在的未定义值,但它不会帮助您编写保护代码。

但仍有改进的希望。提案"Optional Chaining for JavaScript"该功能仍处于第一阶段,但相当活跃。也许 TypeScript 团队可以开始 an implementation在 TypeScript 编译器中提案何时会达到阶段 3?

关于javascript - 检查组合链内的字段是否未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55381613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com