【发布时间】:2017-12-01 11:23:09
【问题描述】:
我正在尝试编写一个紧凑的 typescript 定义文件,但是对于一个更大的项目,我在这样做时遇到了麻烦。
我的项目有很多由多个类实现的接口。
据我所知,我总是需要重新“实现”/重新声明类中接口的方法,如下所示:
declare module someModule {
interface InterfaceOne {
/**
* Some lengthy description
*/
someStuff():any;
/**
* Some lengthy description
*/
moreStuff():any;
}
class OneClass implements InterfaceOne {
/**
* Some lengthy description
*/
someStuff():any;
/**
* Some lengthy description
*/
moreStuff():any;
/**
* Even more description
*/
classStuff(): any;
}
class TwoClass implements InterfaceOne {
/**
* Some lengthy description
*/
someStuff():any;
/**
* Some lengthy description
*/
moreStuff():any;
/**
* Even more description
*/
classStuff(): any;
}
}
如果我从接口中省略 someStuff 和 moreStuff 声明
我收到此错误:
错误 TS2137:Class TwoClass 声明了接口 InterfaceOne 但没有实现它:
所以我总是需要将所有声明复制到每个实现接口的类。
有没有办法解决这个问题?为什么我需要这样做?是否有充分的理由必须将所有接口的组合内容复制到库声明文件中的类主体?这只是一个声明,而不是实现,那么为什么我的声明 implements InterfaceOne 还不够呢?我也不需要将所有基类型成员从超类型复制到扩展类型,那么为什么接口会有所不同?
在我正在为这些接口编写定义文件的库中,实际上是 mixins,所以最后我的定义文件实际上比具有主体的原始实现要长!
编辑:发布后我发现this answer - 所以我的问题可能是重复的,尽管另一个问题是针对旧版本的 Typescript。
编辑: 我意识到这可能不是讨论这个问题的正确地方,我正在考虑删除这个问题。作为参考,我在this official typescript issue问了这个问题。
【问题讨论】:
标签: typescript typescript1.6 definitelytyped