Это не проблема Three.js. Похоже, вы используете TypeScript, и проблема в том, что вы используете внешний скрипт (который не является частью ядра three.js) без объявления его типа.
Когда вы включаете "@ types / three" в свои зависимости dev, вы включаете определения TypeScript only библиотеки core three.js. Поэтому, когда вы пытаетесь использовать THREE.DecalGeometry
, ваш компилятор говорит: «Подождите, DecalGeometry не является частью ТРИ!»
Быстрое решение - просто привести тип к any
. Это говорит TypeScript о том, что не следует проверять тип, хотя он не обнаружит никаких ошибок:
let decal = new (<any>THREE).DecalGeometry(); // <any> type disables type-checking
decal.doWhatever();
decal.nothingMatters(true);
Более сложным решением было бы написать собственный DecalGeometry.d.ts
файл декларации TypeScript со всеми свойствами и методами в DecalGeometry
.
Обновление: я написал быстрый и грязный файл декларации. Просто сохраните его в своем приложении как typings/threeExtras.d.ts
, перезапустите приложение, и ваш компилятор должен его найти:
declare namespace THREE{
export class DecalGeometry extends Geometry{
constructor(meshToIntersect: Geometry, position: Vector3, direction: Vector3, dimensions: Vector3, check?: Vector3);
}
}