javascript - typescript 中的对象解构

标签 javascript reactjs typescript object object-destructuring

是否可以在不提示 Typescript 的情况下解构来自函数调用的对象?

文件 1

  • react 组件 1
...
let obj = null // <-- object initialization
...
useEffect(() => {
  obj = functionCall(...) // <-- function call that populates the object
}, [obj])
  • react 组件 2
const { key1, key2 } = obj // <-- object destructuring

这里我从 Typescript 收到以下提示

  • 类型“null”上不存在属性“key1”。
  • 类型“null”上不存在属性“key2”。

如何删除这些警告?

最佳答案

指定obj的类型:

let obj: null | {key1: sometype; key2: sometype; } = null;

请注意,由于 obj 可能具有值 null,因此您需要围绕解构赋值设置一个保护或默认值:

if (obj) {
    const { key1, key2 } = obj;
}

const { key1, key2 } = obj ?? {key1: defaultForKey1, key2: defaultForKey2};

const { key1 = defaultForKey1, key2 = defaultForKey2 } = obj ?? {};

后两者之间的区别在于如果 obj 不是 null 而是 key1key2 时会发生什么具有值未定义(如果类型允许的话)。

关于javascript - typescript 中的对象解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67314187/

相关文章:

typescript - 在 typescript 函数返回值中保留类型信息

javascript - 如何返回包含在 promise 中的 Protractor afterlaunch 函数中的多个记者?

javascript - React-native - Firebase onAuthStateChanged 无法正常工作

reactjs - GraphQL Playground 返回数据,而应用程序返回 null

html - 我无法让任何元素在打印预览中显示颜色

javascript - Typescript 中的类型保护正在缩小到从不键入

javascript - 如何在javascript中获取子文件夹名称

javascript - 使用 requestAnimationFrame 的错误行为

javascript - 从 MongoDB 查询中只返回一个字段

javascript - 测试使用 jQuery 和 window 对象的 React 组件