扩展第三方接口

尤利乌斯

教程中,我阅读了如何扩展接口。假设我有一个带有一些接口的第三方库。教程指出,我可以简单地定义另一个具有完全相同名称的接口,它将扩展之前的接口:

// third-party source
interface jQueryElement {
    data(name: string): any;
    data(name: string, data: any): jQueryElement;
}

// my code
interface jQueryElement {
    todo(): Todo;
    todo(todo: Todo): void;
}

好的,但是您如何导入它们?不会发生名字冲突?

抱歉,我没有单独在 Typescript 中编写任何代码,仅在 Angular 中编写任何代码,所以我想知道我是否可以遵循这种方法,或者唯一的方法是使用extends?定义其他接口

interface jQueryElement2 extends jQueryElement {
    todo(): Todo;
    todo(todo: Todo): void;
}
奥斯卡·帕兹

当它们在同一范围内时,您可以通过这种方式扩展接口。JQuery声明文件在全局范围内声明接口,所以这不是问题。

您只需将jquery-extension.d.ts文件添加到您的项目(名称不重要),然后再次声明接口,添加您想要的方法或属性。然后,TypeScript 会选择它并将两种类型声明合二为一。

当然,声明方法只会让 TypeScript 认为它们存在。您仍然必须实际定义它们(在另一个文件中,而不是d.ts文件中),否则在尝试执行它们时会出现运行时错误。

一个例子: jquery-extension.d.ts

interface JQueryStatic {
    count(): number;
}

jquery-extension.ts

jQuery.fn.count = function() {
    return this.length;
}

如果只是添加上面的代码而不扩展接口,TypeScript 会抗议,说这count不是JQueryStatic接口的已知属性然后,您只需确保jquery-extension.ts在应用程序的入口点导入

import 'jquery-extension'

并做了。d.ts文件不需要导入,因为它们是环境声明文件,编译器会自行获取它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使第三方库实现接口的策略?

来自分类Dev

需要第三方实现的C#接口

来自分类Dev

在Pelican中安装第三方Markdown扩展

来自分类Dev

伪造第三方库中的扩展方法

来自分类Dev

扩展第三方zend Framework 2模块

来自分类Dev

Singleton与第三方库

来自分类Dev

遮蔽第三方类

来自分类Dev

付款-IAP或第三方

来自分类Dev

停止第三方功能

来自分类Dev

使用第三方控件

来自分类Dev

第三方服务整合

来自分类Dev

使用第三方控件

来自分类Dev

Symfony树枝-第三方

来自分类Dev

卸载“第三方软件”

来自分类Dev

第三方库的使用

来自分类Dev

Swagger cpprest 第三方

来自分类Dev

如何在现有的第三方扩展中重写/扩展Magento类

来自分类Dev

使用 TYPO3 扩展构建器打开第三方扩展

来自分类Dev

第三方jar取决于其他第三方jar

来自分类Dev

使用ArrayList中的第三方接口实现序列化

来自分类Dev

Chrome扩展程序和Django:验证是否允许第三方Cookie

来自分类Dev

在AngularJs中扩展第三方库的最佳方法

来自分类Dev

扩展第三方现有的JAXB类

来自分类Dev

如何允许第三方扩展我的Java库中的类

来自分类Dev

在使用Sentry时如何避免来自第三方扩展的意外崩溃报告?

来自分类Dev

如何从库扩展第三方打字稿界面?

来自分类Dev

Python C扩展将胶囊暴露给ctypes以使用第三方C代码

来自分类Dev

如何允许第三方扩展我的Java库中的类

来自分类Dev

全屏截图,不带第三方扩展程序(Chrome浏览器)