Код TypeScript компилируется правильно.Но (вероятно) из-за структуры моего класса компиляция отличается от ожидаемой.В результате ошибки во время выполнения.
Фактическая проблема, которая вызывает саму ошибку является
this.Scene = new THREE.Scene();
после запуска tsc Я получаю эту строку
this.Scene = new three_1.default.Scene();
Я могу просто удалитьпараметр по умолчанию и это исправляет.Но кажется плохой идеей делать это каждый раз.Я бы лучше знал основную проблему.Классы для контекста в случае, если это связано со структурой, которую я использую.Извините заранее, я относительно новичок в машинописи (и начал JS неделю назад, но у меня есть степень в .NET)
import { MaterialLibrary } from "./Materials/MaterialLibrary";
import { MeshLoader } from "./MeshLoader";
import THREE from "three";
export class Manager
{
//manager instance
private static instance: Manager;
//sub-managers
public static MaterialLib: MaterialLibrary;
public static Scene: THREE.Scene;
//helper classes
public static MeshLoader: MeshLoader;
constructor()
{
Manager.instance = this;
}
static Init()
{
this.MaterialLib = new MaterialLibrary();
this.MeshLoader = new MeshLoader();
this.Scene = new THREE.Scene();
}
static GetInstance(): Manager
{
if(!Manager.instance)
{
Manager.instance = new Manager();
}
return Manager.instance;
}
}
И это компилируется в
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const MaterialLibrary_1 = require("./Materials/MaterialLibrary");
const MeshLoader_1 = require("./MeshLoader");
const three_1 = __importDefault(require("three"));
class Manager {
constructor() {
Manager.instance = this;
}
static Init() {
this.MaterialLib = new MaterialLibrary_1.MaterialLibrary();
this.MeshLoader = new MeshLoader_1.MeshLoader();
this.Scene = new three_1.default.Scene();
}
static GetInstance() {
if (!Manager.instance) {
Manager.instance = new Manager();
}
return Manager.instance;
}
}
exports.Manager = Manager;