typescript - 如何导出一个类并在同一个文件中有一个接口?
问题描述
考虑以下 TypeScript 文件:
// declare a jquery plugin, so that it can be used in the class
interface JQueryStatic {
plot(arg: any, arg2: any, arg3: any): JQueryStatic;
}
export class Foo {
public plotThings() {
$.plot('#myDiv'); // ERROR HERE
// TS2339 (TS) Property 'plot' does not exist on type 'JQueryStatic'
}
}
所以找不到plot
方法。但是,如果我删除export
从类声明中删除,文件编译得很好。
那么,我怎样才能同时拥有 JQueryStatic 接口(以便能够使用 jQuery 插件)和导出的类?
解决方案
你不能像这样扩展在其他地方声明的接口。打字稿命名空间每个文件的所有内容,因此它无法知道您的意思是由 jQuery 类型定义声明的全局接口。
因此,创建一个jquery.d.ts
文件以包含您的 jQuery 特定扩展并添加它,以明确您的意思是全局扩展。
declare global {
interface JQuery {
plot(arg: any, arg2: any, arg3: any): JQuery;
}
}
推荐阅读
- c - 在 Linux 上使用新模块编译时出现问题
- mongodb - MongoDB 子文档使用 NestJs 获取具有文档计数的不同文档
- json - 如何将变量添加到现有 JSON 数组的所有项目?
- php - 为什么这个php数组函数给我一个错误
- python - pandas.api.extensions.register_dataframe_accessor 如何在数据帧切片上保留实例属性
- android - Jenkins-如何在与项目根目录不同的目录中调用 gradle 脚本任务
- oracle - 为什么不是所有的表都显示在 SQuirrel-SQL 中
- python-3.x - 在 3D 阵列中替换 2D 子阵列
- javascript - 如何在 google drive api 中复制文件夹?
- python - 在循环中忙碌时杀死一个python进程