Я пишу плагин для существующего приложения 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?