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(...)