1

为什么第一个示例编译但第二个示例生成“提供的参数与调用目标的任何签名都不匹配?”

interface Foo {
    s: string;
}

// example 1:
function abc(p: Foo[]) {    
}

// ok
abc([{s: ''}]);


// example 2:
class Blah {
    constructor(p: {stuff: Foo[]}) {
    }
}

// not ok: Supplied parameters do not match any signature of call target
var obj = new Blah({stuff: [{s: ''}]});
4

2 回答 2

2

这是编译器中的一个错误。它已被修复;下一个将进行修复的版本是 0.9.1.0。

于 2013-08-05T19:55:37.470 回答
1

我唯一要补充的是,如果您为其创建一个界面,stuff它将起作用:

interface Foo {
    s: string;
}

interface Stuff {
    stuff: Foo[];
}

// example 1:
function abc(p: Foo[]) {    
}

// ok
abc([{s: ''}]);


// example 2:
class Blah {
    constructor(p: Stuff) {
    }
}

var obj = new Blah({stuff: [{s: ''}]});

在 TypeScript Playground 中查看它

于 2013-08-05T20:00:43.353 回答