ค้นหาเว็บไซต์

javascript - การรวม namespace ของ Esbuild & Typescript เข้ากับ bundle ไม่ทำงาน


ฉันมีโค้ดดังนี้ ฉันต้องการใช้ namespace เดียว Namespace1 สำหรับคลาสทั้งหมด แต่ฉันไม่รู้ว่าจะรวมมันโดยไม่ใช้การนำเข้าโมดูลอย่างไร ฉันคิดว่าถ้าทุกอย่างทำงานได้ทั้งใน IDE และ TS (npx tsc) ก็คงไม่มีปัญหาในการบันเดิล ถ้าฉันใช้โมดูล การประกอบใน TS จะไม่ถูกต้อง การตรวจจับชนิด เช่น someMethod (in: Namesace1.Class1) จะไม่ทำงาน

ฉันรวมทุกอย่างใน esbuild มีวิธีทำแบบนี้ไหม? เป็นไปได้ไหมที่จะรวมไฟล์ที่จำเป็นลงในบันเดิลโดยไม่ต้อง import? เป็นไปได้หรือว่านี่เป็นข้อผิดพลาดของ esbuild?

class1.ts:

namespace Namespace1 {
    export class Class1 {
    }
}

class2.ts:

namespace Namespace1 {
    export class Class2 {
    }
}

index.ts:

let class1 = new Namespace1.Class1();
console.log(class1);

let class2 = new Namespace1.Class2();
console.log(class2);

ใน IDE (Visual Studio) และ TSC ตรวจสอบแล้วไม่มีปัญหา แต่ผลลัพธ์ของ bundle ดูเหมือนจะเป็นแบบนี้ - การนิยามคลาสหายไปทั้งหมด:

(() => {
  // src/index.tsx
  var class1 = new Namespace1.Class1();
  console.log(class1);
  var class2 = new Namespace1.Class2();
  console.log(class2);
})();
//# sourceMappingURL=index.js.map