Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在第三方定义文件中扩展类_Typescript - Fatal编程技术网

Typescript 在第三方定义文件中扩展类

Typescript 在第三方定义文件中扩展类,typescript,Typescript,我为我编写的非ts库提供了一个typescript定义文件。我的库将EventEmitter2扩展为“本机”事件系统,因此我试图确定如何定义它: /// <reference types="eventemitter2" /> declare module "my-module" { class MyClass extends EventEmitter2 { // ... } } // 将模块声明为“我的模块”{ 类MyClass扩展了EventEmitter2{

我为我编写的非ts库提供了一个typescript定义文件。我的库将
EventEmitter2
扩展为“本机”事件系统,因此我试图确定如何定义它:

/// <reference types="eventemitter2" />

declare module "my-module" {
  class MyClass extends EventEmitter2 {
    // ...
  }
}
//
将模块声明为“我的模块”{
类MyClass扩展了EventEmitter2{
// ...
}
}
。。。这不管用。EventEmitter2提供了一个
d.ts
文件,因此它应该是可用的,但我得到的错误是:

找不到名称“EventEmitter2”


我和ts合作不够,不知道哪里出了问题。我试着阅读文档/寻找示例,但似乎没有任何东西能够解决此类问题。

您可以从
eventemitter2
导入类型声明,而不是使用三重斜杠指令:

从'EventEmitter2'导入{EventEmitter2};
将模块声明为“我的模块”{
类MyClass扩展了EventEmitter2{
// ...
}
}

三重斜杠指令不起作用,因为
.d.ts
文件位于模块本身,并且不在
节点\u modules/@types

下。我尝试了不同的
导入
,但这是有效的。谢谢现在我想了想,这难道不需要我的库有一个对等依赖项才能为最终用户编译吗?这行不通,所以我可能需要手动包含相关方法。是的,您需要将其作为依赖项。如果您尚未使用
eventemitter2
,则不清楚为什么需要使用
eventemitter2
类型-在这种情况下,您已经是依赖的。我的库在内部使用eventemitter2来提供事件API,而不是重新发明轮子,所以这是一个开发部门。对于那些使用我的库的UMD/捆绑版本的人来说,他们不会安装任何开发部门。我明白了。除了独立的
.js
.d.ts
文件之外,我还使用UMD捆绑包分发我的软件包。并且都使用相同的类型声明。我想你必须考虑是否使用<代码>事件eMeTe2作为非DEV依赖性(对于类型)是可以接受的。