Я установил three@^0.103.0
, который имеет свои собственные определения типов.
В src/global.d.ts
моего проекта:
import * as _THREE from 'three'
declare global {
const THREE: typeof _THREE
}
Тогда в src/global.ts
у меня
import * as THREE from 'three'
(window as any).THREE = { ...THREE }
Затем в src/my-code.js
я пытаюсь использовать THREE
в качестве глобальной переменной, например,
console.log(new THREE.Vector3(1,2,3)) // ERROR, 'THREE' refers to a UMD global, but the current file is a module. Consider adding an import instead.
Это говорит мне, что 'THREE' refers to a UMD global, but the current file is a module. Consider adding an import instead.
.
Когда я перехожу к определению THREE
, это приводит меня к node_modules/three/src/Three.d.ts
, который не является моим src/global.d.ts
файлом.
Итак, похоже, что TypeScript игнорирует мои global.d.ts
определения?
My tsconfig.json
содержит
"allowJs" true,
"checkJs" true,
"include": ["src/**/*"]
и у меня global.d.ts
находится внутри src
.
Если я добавлю
/// <reference path="./global.d.ts" />
к началу src/my-code.js
файла (JavaScript), затем он работает, и я могу перейти к определению THREE
, которое приводит меня к моему global.d.ts
файлу.
Почему не работает без reference
комментария?