我有一个界面
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
?
您可以定义一个类型保护程序,该类型保护程序会在尝试对对象进行结构分解之前检查该对象是否为Foo
类型。这将确保输入对象始终为Foo