【发布时间】:2020-03-27 12:50:09
【问题描述】:
我正在编写一个函数,它接受一个可选对象options,它本身包含一个可选属性params。这个options 对象有一个默认值{},所以它可以在函数签名中被正确地解构。
但是,我在尝试使用界面键入时遇到了问题:
type Params = {
params?: { [key: string]: boolean }
}
interface Foo {
(options?: Params): void
};
const myFoo: Foo = ({ params } = {}) => {} // Property 'params' does not exist on type 'Params | undefined'.
这个错误是有道理的:据编译器所知,options 可能是未定义的(当参数设置为 optional 时由它解释),所以params 可能不存在它。
但是,它没有考虑到 可选 参数可能具有默认值。然而,我还没有找到一种在类型或接口中正确指示这一点的方法。直接在函数签名中输入确实有效,但不能重复使用或导出。
在使用类型或接口时,有什么标准方法可以解决这个问题吗?
【问题讨论】:
标签: typescript types interface optional destructuring