我正在使用JavaScript库OpenSeadragon在一个角8应用程序。因此,常见的方法是在angular.json scripts部分注册angular.json文件,并以以下方式在TypeScript中使用该文件:
declare var OpenSeadragon: any;然后,我可以在我的OpenSeadragon组件中使用如下所示的TypeScript:
const test: any = OpenSeadragon({}); 所以,这是可行的。
对于这个库,有几个插件/扩展。我需要使用这些插件中的一些。它们依赖于导入主/核心库。因此,我也将插件的js文件添加到angular.json scripts部分。
"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;
}; 对于主库中的一个selection({withOptions})查看器对象/实例,他们引入了一个名为的新方法
问题是如何访问角TypeScript组件中的新方法?目前,我正在得到方法选择不存在的错误。
发布于 2019-09-12 12:03:25
您可以尝试更改声明中的any值并添加特定类型,或者添加如下内容:
declare global {
interface OpenSeadragon {
selection: (options:any) => any;
}
}发布于 2019-11-22 06:09:58
移除./从路径
路径应该类似于这个
"node_modules/openseadragon/build/openseadragon/openseadragon.min.js","node_modules/openseadragon-annotations/dist/openseadragon-annotations.js",
https://stackoverflow.com/questions/57906127
复制相似问题