在打字稿中使用默认值来构造参数

时间:2017-11-08 22:36:15

标签: typescript

如果我在typescript中有以下模块src/mod.ts

export interface Foo {
  foo?: number
}
export function bar({foo = 1}: Foo = {}) {
 ...
}

它编译得很好,我可以在包中使用它。但是,当我编译到dist/mod.jsdist/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中的默认值对对象进行解构?

1 个答案:

答案 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})