Typescript 通过模块扩充将方法添加到外部类:错误
这看起来很琐碎,但我没能让它工作。 我在外部npm依赖项中有一个类Typescript 通过模块扩充将方法添加到外部类:错误,typescript,Typescript,这看起来很琐碎,但我没能让它工作。 我在外部npm依赖项中有一个类集合(比如packagename)。在我当前的项目中,我想向该类的原型添加一些方法,并告知TS这一事实 在外部模块中,类的定义如下: 导出类集合{ // ... } 下面是我在项目的external.d.ts文件中写的内容: 从“packagename”导入{Document}; 声明模块“packagename”{ 导出接口集合{ 新方法():承诺; } } 但在另一个文件中: 从“packagename”导入{Collec
集合
(比如packagename
)。在我当前的项目中,我想向该类的原型添加一些方法,并告知TS这一事实
在外部模块中,类的定义如下:
导出类集合{
// ...
}
下面是我在项目的external.d.ts
文件中写的内容:
从“packagename”导入{Document};
声明模块“packagename”{
导出接口集合{
新方法():承诺;
}
}
但在另一个文件中:
从“packagename”导入{Collection}
Collection.prototype.newMethod=函数(此:集合){
// ...
};
失败,出现以下错误:
TS2693: 'Collection' only refers to a type, but is being used as a value here.
如果我将Collection
与import*作为“packagename”中的所有内容导入,则情况也是一样的everything.Collection
我错过了什么?谢谢
Typescript允许您扩展接口(您所做的),但接口只是一个类型(没有您所看到的实现)
我不明白你需要用那种方式扩展课程。为什么不在现有类的基础上创建一个子类呢?这似乎是一种扩展类的正确方法,而不是通过原型扩展进行修补
在这些地方之后,您只需要导入并使用这个新类
您有充分的理由不这样做吗?因此它似乎不起作用,因为从packagename
导入是在一个index.ts
文件中重新导出的导入,该文件只聚合了其他文件。以我想要扩充的类的确切源文件为目标似乎是可行的:
从“packagename”导入{Document};
声明模块“packagename/dist/collection”{
导出接口集合{
新方法():承诺;
}
}
给了我提示。因为那样我就不能使用newMethod
,例如对外部包返回的集合
(这是我无法控制的类型)。模块扩充应该可以解决这个问题。例子:
import { Collection } from "packagename"
export class ExtendedCollection extends Collection {
newMethod() {
}
}