gpt4 book ai didi

javascript - 如何声明对运行时 JavaScript 包中可用的现有命名空间的引用

转载 作者:行者123 更新时间:2023-11-28 03:30:01 26 4
gpt4 key购买 nike

我正在为现有的 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 应用程序中可用的命名空间?

最佳答案

Forge Viewer 有一个 TypeScript 定义文件 (.d.ts),您应该能够将其与 THREE.js 定义文件一起使用:https://forge.autodesk.com/blog/typescript-definitions-forge-viewer-and-nodejs-client-sdk-now-available .

关于javascript - 如何声明对运行时 JavaScript 包中可用的现有命名空间的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com