第三方类别的类型定义

朱克

我有一个名为canJS的第三方库。有这个can.Map模块。该模块是用AMD编写的。您可以使用依赖项加载器(例如requirejs)进行加载。

使用can.Map,我们提供了两种创建实例的方式。

  1. let foo = new can.Map([props])
  2. let Foo = can.Map.extend([name,] [staticProperties,] instanceProperties); let foobar = new Foo();

我试图为此类编写一个简单的类型定义

declare module "can/map/" {
  class canMap {
  }
}

但现在我坚持了。

这种类型的定义看起来如何。我总是收到这样的错误:

不能对类型缺少调用或构造签名的表达式使用'new'

硅通孔

您可以使用适当的文档来编写声明文件。

我认为您的情况将是这样的:

declare module can {
  class Map {
    constructor(props: any);
    static extend(name, staticProperties, instanceProperties): Map;
    attr(): {[index: string]: any};

    // Declarations for other properties and functions
  }
}

用法(当然,应加载“ canjs”):

var a = new can.Map({});
var b = can.Map.extend({}, {}, {});
var c = a.attr();

更新1

最好的办法是上找不到明确键入声明definitelytyped.org几乎所有流行的库定义都已经被编写。

您可以使用分型为“d.ts”文件管理。

更新2

可选参数(标记为“?”)和静态函数“ extend”返回构造函数(带有重载):

declare module can {
  class Map {
    constructor(props?: any);
    static extend(instanceProperties): { new(): Map };
    static extend(name, staticProperties, instanceProperties): { new(): Map };
    attr(): {[index: string]: any};

    // Declarations for other properties and functions
  }
}

let creator1 = can.Map.extend({});
let creator2 = can.Map.extend({}, {}, {});
var c = new creator1();

当然,您应该指定函数参数的类型(现在,thay是“ any”类型的)。您可以在Typescript文档中找到更多详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

第三方类别的类型定义

来自分类Dev

Roslyn:获取在第三方库中定义的类型的符号

来自分类Dev

期望第三方库功能提供“类型”

来自分类Dev

声明第三方库的定义属性

来自分类Dev

Singleton与第三方库

来自分类Dev

遮蔽第三方类

来自分类Dev

付款-IAP或第三方

来自分类Dev

停止第三方功能

来自分类Dev

使用第三方控件

来自分类Dev

第三方服务整合

来自分类Dev

使用第三方控件

来自分类Dev

Symfony树枝-第三方

来自分类Dev

卸载“第三方软件”

来自分类Dev

第三方库的使用

来自分类Dev

Swagger cpprest 第三方

来自分类Dev

扩展第三方接口

来自分类Dev

第三方类型的Json.NET自定义序列化/反序列化

来自分类Dev

第三方类型的Json.NET自定义序列化/反序列化

来自分类Dev

定义第三方类型类的实例,未找到隐式但显式工作正常

来自分类Dev

第三方应用程序级别的临时输入

来自分类Dev

使用Morphia手动转换第三方类别

来自分类Dev

第三方jar取决于其他第三方jar

来自分类Dev

Typescript 第三方定义文件 - 类缺少方法定义 - 如何扩展定义?

来自分类Dev

如何访问第三方自定义资源定义?

来自分类Dev

第三方库中不同的数据类型长度

来自分类Dev

在Haskell中处理来自第三方库的数据类型的最佳实践?

来自分类Dev

如何从第三方@types模块重用TypeScript联合类型?

来自分类Dev

自定义外部/第三方库的日志记录

来自分类Dev

如何更改第三方库中定义的全局常数