使用声明合并对接口进行普遍修补

时间:2018-10-16 14:34:35

标签: typescript typescript-typings

tl; dr-我想合并一个与我自己输入的第三方接口,这样导入原始接口的任何人都将获得合并后的接口。 这可能吗?


我正在开发一个用JavaScript和AngularJS编写的项目,我们已经开始切换到TypeScript。 这样,我们正在使用AngularJS typings from DefinitelyTyped,但我们希望对其进行一些自定义。 例如,我们想要更改IController接口,以使$onInit()?: void的定义变为$onInit(): void以使其成为必需。

我可以通过将声明与自己的接口合并来实现此目的:

interface IController {
    $onInit(): void;
}

但是我还没有弄清楚如何将合并后的接口应用于IController的所有用法。 这一点很重要,因此我可以强制所有控制器都具有此功能,而又不要让案件流连忘返。没有导入正确的界面。

可以做到吗?如果可以,怎么办?

PS:我已经尝试了许多不同的名称空间组合,但是我在该领域并不强壮,所以也许我还没有遇到合适的咒语。

1 个答案:

答案 0 :(得分:1)

您不能将可选方法与必需方法合并。 (到目前为止,您似乎还没有真正合并任何东西,只是声明了一个单独的接口供您的代码使用,而不是原始的IController。)您必须将@types/angular的输入分叉为您的项目;请参阅this answer,以了解实现此操作的可能方法的摘要。