#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
и использую пакет модулей. Это работает. Однако я все еще не знаю, могут ли собственные модули работать с машинописным текстом.