使用typescript中的默认值对参数进行分解
如果我在typescript中有以下模块src/mod.ts:使用typescript中的默认值对参数进行分解,typescript,Typescript,如果我在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) 在另一个typescript包中
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)
在另一个typescript包中使用时会导致错误:类型“Foo | undefined”没有属性“Foo”,也没有字符串索引签名
我还没有找到关于谷歌的投诉,尽管我可能对这个问题进行了错误的描述,所以我认为我做错了什么。如何使用typescript中的默认值来分解对象?请尝试在类中定义公共属性
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})
您能展示报告错误的代码吗?您能添加一些关于如何使用函数的详细信息吗?我没有通过一个简单的函数调用bar{foo:0}:…,重新创建错误。。。谢谢你的帮助。这似乎是一个增量编译问题。我使用tsc-watch并进行了纱线升级以刷新库。当直接使用tsc时,问题消失了。我想可能还是一只虫子,但我现在似乎无法重现。可能故事的寓意是不要进行纱线升级,并期望tsc-watch正确地接收包装更改。与标准ES2015相比,这相当可怕。