javascript - 如何使用 Angular 8 访问 TypeScript 中的 JavaScript 内容(或扩展其他 JS 文件的 JavaScript 文件)

标签 javascript angular typescript angular8 openseadragon

我在 Angular 8 应用程序中使用 JavaScript 库 OpenSeadragon。所以通常的做法是在angular.json的scripts部分注册javascript.min.js文件,然后在TypeScript中使用,方法如下:

declare var OpenSeadragon: any;

然后我可以像这样在我的 TypeScript 组件中使用 OpenSeadragon:

const test: any = OpenSeadragon({});  

所以,这是有效的。

对于这个库,有几个插件/扩展。我需要使用其中一些插件。它们依赖于导入主/核心库。所以我也在 angular.json scripts 部分添加了插件的 js 文件。

"scripts": [
  "./node_modules/openseadragon/build/openseadragon/openseadragon.min.js",       
  "./node_modules/openseadragonselection/dist/openseadragonselection.js"
]

这些插件的结构是它们以下列方式扩展核心功能:

    $.Viewer.prototype.selection = function(options) {
        if (!this.selectionInstance || options) {
            options = options || {};
            options.viewer = this;
            this.selectionInstance = new $.Selection(options);
        }
        return this.selectionInstance;
    };  

对于主库中的Viewer 对象/实例,他们引入了一个名为selection({withOptions})的新方法

问题是我怎样才能在我的 Angular TypeScript 组件中访问新方法?目前我收到方法选择不存在的错误。

最佳答案

您可以尝试更改声明中的 any 值并添加特定类型,或者您可以添加如下内容:

declare global {
  interface OpenSeadragon {
    selection: (options:any) => any;
  }
}

关于javascript - 如何使用 Angular 8 访问 TypeScript 中的 JavaScript 内容(或扩展其他 JS 文件的 JavaScript 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57906127/

相关文章:

javascript - 递归深度比较

javascript - 当我点击相邻元素时触发点击

javascript - Angular Bootstrap 文本轮播垂直滚动

javascript - 在 angular service.ts 中使用谷歌的 api.js

jquery - TS2339 : Property 'selectpicker' does not exist on type 'JQuery<HTMLElement>'

Angular 如何在从 API 获取数据时添加加载器动画?

javascript - ASP.NET MVC : Create Crawlable link tags from rendered pager

angular2 - 如何设置选择框的初始值

angular - 检查后更改 - Angular [已选择]

angular - 在primeNG中使用toast确认删除记录