如何解构可能为空的对象

问题描述 投票:1回答:1

我有一个界面

interface Foo {
  name: string
  subject: string
  body: string
}

还有一个接受Foo | {}的函数,在该函数中,我对属性进行了解构,并在属性为非空时对其进行处理

const doStuff = ({body, subject, name}: Foo | {}) => {
  const errors = [
    body?.trim() && `body`,
    subject?.trim() && `subject`,
    name?.trim() && `name`,
  ].filter(x => x);
  setErrors(errors)
  ...
}

解构未编译,因为...可能是对象这些属性。我到底该如何告诉打字稿它很酷,我希望那些属性在不使用undefined@ts-ignore的情况下为any

typescript destructuring
1个回答
0
投票

您可以定义一个类型保护程序,该类型保护程序会在尝试对对象进行结构分解之前检查该对象是否为Foo类型。这将确保输入对象始终为Foo

© www.soinside.com 2019 - 2024. All rights reserved.