Typescript-如何声明对现有名称空间的引用,该名称空间在运行时可从javacript捆绑包中获得

问题描述 投票:1回答:1

我正在为现有的Javascript应用程序编写插件-Forge Autodesk.Viewing

第6版之后,他们在应用程序包中包含THREE.js。

现在,我可以像这样在我的插件中使用它:

declare var THREE:any; 

但是我松了所有类型。

所以,我要通过]安装three.js>

npm install --save three

我可以使用三个,并将其导入。但是我不需要导入它,因为我已经在主应用程序中将其导入。我需要做的是引用类型。

所以,我试图做这样的事情:

    declare var THREE:THREE;
//Cannot use namespace 'THREE' as a type.

然后我尝试:

/// <reference types='three' />可以正常工作,但是:

        const planes:THREE.Plane[] = []; //this line is okey

        planes.push(new THREE.Plane()); //but this says

        //'THREE' refers to a UMD global, 
        // but the current file is a module. 
        // Consider adding an import instead.

Tsc坚持我们应该导入它:

import * as THREE from 'three'; 

它的编译没有任何问题,但是当我启动应用程序时,它崩溃了,原因是它尝试获取另一个THREE.js实例,我不提供该实例,因为我将其放在主应用程序中。

总而言之-如何声明正确的引用并将类型保留为主要javascript应用程序可用的名称空间?

我正在为现有的Javascript应用程序编写插件-Forge Autodesk。查看版本6之后,他们将THREE.js包含在其应用程序包中。现在,我可以将其与我的插件一起使用,例如...

javascript typescript three.js autodesk-forge autodesk-viewer
1个回答
0
投票

Ypu需要导入三个模块:像这样:

© www.soinside.com 2019 - 2024. All rights reserved.