TypeScript:构建:提供的参数与调用目标的任何签名都不匹配

TypeScript: Build: Supplied parameters do not match any signature of call target

我有这个代码(修剪):

class cSubjectSite  {

    collectionHomeMarker: Microsoft.Maps.EntityCollection;

    showAddressMarker() {
        var opts: Microsoft.Maps.EntityCollectionOptions = { 
            zIndex: zIndex_HomeMarker, bubble: true, visible: true 
        };
    }
    // Compiler error on this line:
    this.collectionHomeMarker = new Microsoft.Maps.EntityCollection(opts);
}

我觉得这很好。这里来自声明 Microsoft.Maps.d.ts:

export interface EntityCollectionOptions {
    bubble?: boolean;
    visible?: boolean;
    zIndex?: number;
}

export class EntityCollection implements Entity {
    EntityCollection(options?: EntityCollectionOptions);
    // Etc.

还有一个我正在使用的第二个声明文件 (Microsoft.Maps.AdvancedShapes.d.ts) 用于扩展功能,它对 EntityCollection 有另一个定义:

export class EntityCollection implements Entity {
    constructor(options?: EntityCollectionOptions);

看起来这两个 def 文件针对的是不同的 ts 版本(不同的构造函数语法)?我对 def 文件的了解还不够多。

我正在使用 VS 2013 和 ts 1.5。我确保我的路径变量和我的项目文件都引用了 v1.5。我从 Nuget 获得了我的 Bing Maps def 文件。

我是打字稿的新手,所以我可能遗漏了一些基本的东西。

Microsoft 从未发布过 Bing 地图的 TypeScript 库。你在 Nuget 上找到的那个一定是某人创建的包装器。不确定它被包裹在谁身上。在 Bing 地图 API 中没有 Microsoft.Maps.EntityCollectionOptions class,这只是一个占位符名称,您可以在其中放置一个具有选项的对象。例如:

var opts = { visible: true };
var layer = new Microsoft.Maps.EntityCollection(opts);

所以它看起来像一个错误的声明。我将 Microsoft.Maps.d.ts EntityCollection 声明更改为:

export class EntityCollection implements Entity {
    constructor(options?: EntityCollectionOptions);

这显然是我使用的 TS 版本 (1.5) 的正确语法。