Как я могу использовать собственные модули ThreeJS ES6 с машинописным текстом?

#typescript #three.js #es6-modules

Вопрос:

Я использую собственные модули ThreeJS ES6 непосредственно в браузере. Это действительно классная функция, в которой вы можете использовать только import три файла javascript из ваших файлов без какого-либо модуля.

В javascript работает следующее:

 import * as THREE from './lib/three.module.js'
import { OrbitControls } from './lib/OrbitControls.js'
 

Теперь я хочу сделать это в Typescript, я установил определения typescript с помощью

 npm install --save @types/three 
 

Но VS Code все еще не может найти файлы объявления типов:

⚠️ Could not find a declaration file for module '../lib/three.module.js'

⚠️ Could not find a declaration file for module '../lib/OrbitControls.js'.

Как было предложено в комментариях, я изменил импорт на

 import * as THREE from 'three'
import { OrbitControls } from three/examples/jsm/controls/OrbitControls'
 

Теперь объявления найдены, но typescript не может найти модули!

⚠️ An accessor cannot be declared in an ambient context and Failed to resolve module specifier "three".

⚠️ Relative references must start with either "/", "./", or "../".

Как я могу использовать собственные модули ES6 из ThreeJS в своем проекте Typescript без пакета модулей?

Ответ №1:

Попробуйте организовать свой импорт следующим образом:

 import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
 

Комментарии:

1. Спасибо, теперь проверка типов работает, но при компиляции я получаю: An accessor cannot be declared in an ambient context и Failed to resolve module specifier "three". Relative references must start with either "/", "./", or "../".

2. Какую версию машинописного текста вы используете?

3. Версия 3.4.5. После множества проб и ошибок я не смог заставить собственные модули работать с компиляцией машинописного текста. Так что теперь я просто установил npm install three и использую пакет модулей. Это работает. Однако я все еще не знаю, могут ли собственные модули работать с машинописным текстом.