Javascript 网页包+;打字机脚本:";财产';jwplayer';不存在于类型';窗口'&引用;使用脚本加载程序时
到目前为止,我正在制作一个相当基本的组件,如下所示:Javascript 网页包+;打字机脚本:";财产';jwplayer';不存在于类型';窗口'&引用;使用脚本加载程序时,javascript,typescript,webpack,Javascript,Typescript,Webpack,到目前为止,我正在制作一个相当基本的组件,如下所示: import * as React from 'react'; import 'lib/jwplayer-7.7.4/jwplayer.js'; interface Props { src: string, }; export default class ShiftPlayer extends React.Component<Props> { element: HTMLDivElement = null; com
import * as React from 'react';
import 'lib/jwplayer-7.7.4/jwplayer.js';
interface Props {
src: string,
};
export default class ShiftPlayer extends React.Component<Props> {
element: HTMLDivElement = null;
componentDidMount() {
const { src, ...props } = this.props;
window.jwplayer(this.element).setup({
file: src,
...props,
});
}
render() {
return (
<div
ref={(el) => {
this.element = el;
}}
/>
);
}
}
import*as React from'React';
导入'lib/jwplayer-7.7.4/jwplayer.js';
界面道具{
src:string,
};
导出默认类ShiftPlayer扩展React.Component{
元素:htmldevelment=null;
componentDidMount(){
const{src,…props}=this.props;
jwplayer(this.element).setup({
档案:src,
…道具,
});
}
render(){
返回(
{
该元素=el;
}}
/>
);
}
}
但是,这始终显示我的IDE(VSCode)中的错误:
由于库是通过脚本加载器加载的,因此我可以假设它存在于窗口对象上
为什么会这样?如何解决这个问题?TypeScript默认情况下只知道标准的窗口属性,因此您必须告诉它任何非标准全局属性,例如jwplayer
。这应该做到:
interface Window {
jwplayer: any;
}
window.jwplayer(...)
此解决方案用于扩充标准的窗口
界面。如果您需要在多个地方使用<代码> JWBooer-<代码>,请考虑将扩展窗口接口提取到<代码> .d.ts/COD>文件 您需要为JWPoLe:安装Type Script定义。
npm i @types/jwplayer
然后就用
jwplayer(ele).setup(...)