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

     2023-03-13     291

关键词:

【中文标题】使用声明合并普遍修补接口【英文标题】:Universally patching an interface with declaration merging 【发布时间】:2019-03-21 03:11:27 【问题描述】:

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


我正在开发一个用 JavaScript 和 AngularJS 编写的项目,我们已经开始改用 TypeScript。 有了这个,我们使用AngularJS typings from DefinitelyTyped,但我们想对其进行一些定制。 例如,我们想更改IController 接口,使$onInit()?: void 的定义变为$onInit(): void 以使其成为强制性。

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

interface IController 
    $onInit(): void;

但我还没有想出如何将合并的接口应用于IController 的所有用途。 这很重要,因此我可以强制所有控制器都具有此功能,而不会让案例溜走,例如没有导入正确的接口。

这可以吗?如果有,怎么做?

PS:我尝试了很多不同的命名空间组合,但我在这方面不是太强,所以也许我还没有找到正确的咒语。

【问题讨论】:

【参考方案1】:

您不能将可选方法与必需方法合并。 (听起来到目前为止,您实际上还没有合并任何东西,只是声明了一个您的代码可以使用的单独接口,而不是原始的IController。)您必须为您的项目分叉@types/angular 类型;请参阅this answer 了解可能的执行方式的摘要。

【讨论】:

啊,这解释了为什么它当时似乎有效,尽管我可以发誓我在其他地方看到有人这样做。我希望我们不必分叉它,但我想这是生活。感谢您的帮助:)

Git将修补程序合并到多个分支

】Git将修补程序合并到多个分支【英文标题】:Gitmerginghotfixtomultiplebranches【发布时间】:2012-06-0110:41:23【问题描述】:我一直在尝试围绕git分支模型。我一直在查看http://nvie.com/posts/a-successful-git-branching-model/的一些想法,并且来... 查看详情

您可以通过 kustomize 修补没有基础的任意资源吗?

...我的文件夹结构中没有声明基的资源。请注意,我在顶部使用FluxCD进行协调,在推送补 查看详情

在模块内合并 TypeScript 接口

...尝试从jasmine中合并Matchers界面。接口在jasmine命名空间内声明。我创建了.d.ts文件并添加了以下内容:declarenamespacejasmineinterfaceMatcherstoBeSuccessful(): 查看详情

TypeScript 声明合并 - 更改属性类型

】TypeScript声明合并-更改属性类型【英文标题】:TypeScriptdeclarationmerging-changingapropertytype【发布时间】:2017-09-1000:10:00【问题描述】:是否可以更改在接口中声明的属性的类型?我不知道如何用语言来解释这一点,所以这里有一... 查看详情

layabox---typescript---声明合并(代码片段)

...述JavaScript对象的模型。这其中尤其独特的一个例子是“声明合并”的概念。理解了这个概念,将有助于操作现有的JavaScript代码。同时,也会有助于理解更 查看详情

使用泛型和合并对象的 Typescript 声明文件

】使用泛型和合并对象的Typescript声明文件【英文标题】:TypescriptDeclarationFileworkingwithgenericsandmergedobjects【发布时间】:2021-03-2403:11:03【问题描述】:我创建了一个配置对象检查器功能,它基本上检查对象是否与蓝图匹配。非常... 查看详情

在 C++ 中使用多继承声明接口并实现接口

】在C++中使用多继承声明接口并实现接口【英文标题】:DeclareinterfaceandImplementtheinterfaceusingmulti-inheritanceinC++【发布时间】:2014-11-2411:52:29【问题描述】:我想知道它可用于声明接口并使用多继承实现接口。例如。我为接口声明... 查看详情

合并/检索打字稿声明文件

...个*.d.ts文件。这是一组“全局”声明(即命名模块)。我使用类型将声明文件从该类型项目中提取到一个TypeScript项目中。typingsinstallgithub:phreed/typ 查看详情

java语言程序设计上机实验4掌握声明接口一个类实现接口的声明和使用方法

...口的类的关系,掌握声明接口、一个类实现接口的声明和使用方法;熟悉Java语言包和实用包中的常用类。实验内容:(*)为选做声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为... 查看详情

如何在接口声明中使用 PromiseConstructorLike 实例的原型?

】如何在接口声明中使用PromiseConstructorLike实例的原型?【英文标题】:howtousetheprototypeofPromiseConstructorLikeinstanceininterfacedeclaration?【发布时间】:2017-03-2118:26:17【问题描述】:我正在尝试为节点的GoogleMaps帮助程序模块编写声明,... 查看详情

使用“接口”时在类中没有声明成员函数

】使用“接口”时在类中没有声明成员函数【英文标题】:Nomemberfunctiondeclaredinclasswhenusing"interface"【发布时间】:2016-01-2820:04:35【问题描述】:我想用一些静态方法实现接口Formatter,然后创建另一个实现这些方法的类。... 查看详情

打字稿:无法声明接口

...erface【发布时间】:2021-02-0606:33:27【问题描述】:我正在使用typescript,但无法使用另一个文件中声明的接口。我的global.d.ts看起来像这样。declareinterfaceIPropSendEmailfrom:string,to:string,subject:string,html:string,下面是ts 查看详情

在 TypeScript 中使用 import/require 来获取接口声明

】在TypeScript中使用import/require来获取接口声明【英文标题】:Useimport/requireinTypeScripttogetinterfacedeclarations【发布时间】:2012-10-1014:54:40【问题描述】:如果我使用///<referencepath="..."/>语法引用TypeScript声明文件(例... 查看详情

XCode4 使用接口生成器声明变量

】XCode4使用接口生成器声明变量【英文标题】:XCode4Declarevariablesusinginterfacebuilder【发布时间】:2011-07-1211:05:34【问题描述】:这是使用viewControllers实现/连接视图的一般方式(如下)。在视图控制器的.h文件中声明IBOutlet变量。打... 查看详情

在接口中使用胖箭头和非胖箭头语法声明函数有啥区别?

】在接口中使用胖箭头和非胖箭头语法声明函数有啥区别?【英文标题】:What\'sthedifferencebetweendeclaringfunctionsusingthefatarrowandnon-fatarrowsyntaxininterfaces?在接口中使用胖箭头和非胖箭头语法声明函数有什么区别?【发布时间】:2021-06... 查看详情

Java 接口中的方法是不是应该使用或不使用公共访问修饰符来声明?

】Java接口中的方法是不是应该使用或不使用公共访问修饰符来声明?【英文标题】:ShouldmethodsinaJavainterfacebedeclaredwithorwithoutapublicaccessmodifier?Java接口中的方法是否应该使用或不使用公共访问修饰符来声明?【发布时间】:2010-09-... 查看详情

使用 TypeScript 声明 (*.d.ts) 和接口的正确方法?

】使用TypeScript声明(*.d.ts)和接口的正确方法?【英文标题】:ThecorrectwaytouseTypeScriptdeclarations(*.d.ts)andinterfaces?【发布时间】:2017-11-1415:32:38【问题描述】:在TypeScript中使用接口似乎有两种方式:我可以在普通的.ts文件中定义它们... 查看详情

ios中动态热修补技术jspatch韩俊强的博客

...溃的严重bug,提交新版本到appstore审核速度太慢影响用户使用,这时候就可以利用JSPatch可以让你用JavaScript书写原生iOSAPP。只需在项目引入极小的引擎,就可以使用JavaScript调用任何Objective-C的原生接口,获得脚本语言的优势:为... 查看详情