如果我在typescript中有以下模块src/mod.ts
:
export interface Foo {
foo?: number
}
export function bar({foo = 1}: Foo = {}) {
...
}
它编译得很好,我可以在包中使用它。但是,当我编译到dist/mod.js
和dist/mod.d.ts
时,dist/mod.d.ts
包含:
declare export function bar({foo}?: Foo)
在其他打字稿包中使用时会导致错误:Type 'Foo | undefined' has no property 'foo' and no string index signature
。
我一直无法找到关于这个/谷歌的投诉(虽然我可能错误地描述了这个问题),所以我认为我做错了什么。我该如何使用typescript中的默认值对对象进行解构?
答案 0 :(得分:0)
尝试在类中定义公共属性。
export interface Foo {
foo?: number
}
/** @class */
export class bar {
public foo?: number;
constructor(obj: Foo = {} as Foo) {
let {
/** Set defaults for the destructured object here */
foo = 1
} = obj;
/** Hint: put jsdoc comments here for inline ide auto-documentation */
this.foo = foo;
}
}
// Usage
const myBar = new bar({foo:1})