Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ES6模块内使用typescript支持扩展全局对象,如“Autodesk.Viewing.Extension”_Typescript_Autodesk Forge_Autodesk Viewer - Fatal编程技术网

在ES6模块内使用typescript支持扩展全局对象,如“Autodesk.Viewing.Extension”

在ES6模块内使用typescript支持扩展全局对象,如“Autodesk.Viewing.Extension”,typescript,autodesk-forge,autodesk-viewer,Typescript,Autodesk Forge,Autodesk Viewer,我已经开发了一个forge扩展,现在我想添加以下类型脚本支持。但是,我无法从全局Autodesk命名空间扩展原型,例如Autodesk.Viewing.Extension,Autodesk.Viewing.ToolInterface,因为typescript找不到对象找不到名称“Autodesk”(在传输时不存在)。目前,我的解决方法是通过调用创建扩展类(请参见代码示例)的factory函数,向参数Autodesk,因为我无法从ES6模块内部访问全局Autodesk变量。此解决方法自然删除所有类

我已经开发了一个forge扩展,现在我想添加以下类型脚本支持。但是,我无法从全局Autodesk命名空间扩展原型,例如
Autodesk.Viewing.Extension
Autodesk.Viewing.ToolInterface
,因为typescript找不到对象
找不到名称“Autodesk”
(在传输时不存在)。目前,我的解决方法是通过调用创建扩展类(请参见代码示例)的factory函数,向参数
Autodesk
,因为我无法从ES6模块内部访问全局Autodesk变量。此解决方法自然删除所有类型

如何在自定义扩展中完全支持typescript

我的变通方法
函数(Autodesk:any){//通过传递全局可访问的Autodesk对象来注入Autodesk。。。
返回类MyExtension扩展了Autodesk.Viewing.Extension{
...
};
}
我想要实现的(通过typescript支持):
类MyAwesomeExtension扩展了Autodesk.Viewing.Extension{
构造函数(查看器、选项){
超级(查看器、选项);
}
加载(){
log('MyAwesomeExtensions已加载');
viewer.setEnvMapBackground(null);//如果有背景环境,则隐藏背景环境
viewer.setBackgroundColor(0,64,128);//设置背景色
返回true;
}
卸载(){
log('MyAwesomeExtensions已卸载');
返回true;
}
}
Autodesk.Viewing.theExtensionManager.registerExtension('MyAwesomeExtension',MyAwesomeExtension);

所以我的问题是我不知道如何从ES6模块访问全局库。但是,您可以使用从ES6模块内部访问全局变量。这使您能够像平常一样使用打字

MyExtension.ts

const Autodesk=globalThis.Autodesk;
常数三=全局三;
导出类MyExtension扩展了Autodesk.Viewing.Extension{
//...
}
如果将typescript配置为允许umd访问,则前两行(例如,
const THREE=globalThis.THREE
)不是必需的:

{ 
  "compilerOptions": {
      "allowUmdGlobalAccess": true,          /* Allow accessing UMD globals from modules. */
  }
}

我把这个问题分解成一个只有打字稿的问题