node.js - ไม่สามารถเริ่มต้นคลาสจากโมดูล TypeScript/NPM/Webpack ที่คอมไพล์แล้ว
ด้วยเหตุผลบางอย่างฉันไม่สามารถถามคำถามได้โดยไม่มีข้อผิดพลาดเกี่ยวกับโค้ดที่ไม่ได้ทำเครื่องหมายอย่างถูกต้อง ดังนั้นฉันจึงย้ายส่วนใหญ่ไปที่ GitHub ที่นี่: https://github.com/JoepBC/typescript-packages-example-error
ปัญหาสรุปได้ดังนี้: การใช้โครงสร้างแพ็กเกจตาม GitHub (ใช้ TypeScript, webpack และ ts-loader) ผมมีสองแพ็กเกจคือ LibA และ LibB ซึ่ง LibB ต้องการโหลดอ็อบเจ็กต์จากโค้ด LibA ที่คอมไพล์แล้วจาก TS->JS (.d.ts ไฟล์นิยามสำหรับ LibA ถูกสร้างขึ้นเรียบร้อยแล้ว)
โค้ดสำหรับ '~/A/src/index.ts' มีดังนี้:
import {TestExport} from './test_export.ts';
export class Foo extends TestExport {
constructor(text:string) {
super(text);
console.log("added by the extended class");
}
}
let a = new Foo('bar');
รหัสดังต่อไปนี้ของ '~/A/src/test_export.ts':
export class TestExport {
constructor(text:string) {
console.log("TestExport constructor argument:"+text);
}
}
แหล่งที่มาของ '~/B/src/index.ts' คือ:
import * as LibA from 'liba';
console.log('----');
let a = new LibA.Foo('arg1');
โค้ดจาวาสคริปต์ที่สร้างขึ้นสำหรับ Lib A ทำงานตามที่คาดไว้ Lib B พยายามนำเข้า (import) จาก A (ในขณะที่ A นำเข้าจากไฟล์อื่น [แม้จะไม่ได้คอมไพล์] ภายในแพ็กเกจเดียวกันได้อย่างปกติ) และโค้ดจาวาสคริปต์จาก A สามารถรันภายใน B ได้ แต่ใน B ฉันไม่สามารถสร้างออบเจกต์ใหม่จากคลาสใน A ได้
ผลลัพธ์เมื่อรัน B คือ:
~/B/dist $ node index.js
TestExport constructor argument:bar
added by the extended class
----
webpack:///./src/index.ts?:5
var a = new LibA.Foo('arg1');
^
TypeError: LibA.Foo is not a constructor
at eval (webpack:///./src/index.ts?:5:9
at Object../src/index.ts (~/B/dist/index.js:108:1)
at __webpack_require__ (~/B/dist/index.js:20:30)
at ~/B/dist/index.js:84:18
at Object. (~/B/dist/index.js:87:10)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
at Module.load (module.js:560:32)
at tryModuleLoad (module.js:503:12)
at Function.Module._load (module.js:495:3)
วิธีต่างๆ ในการเรียกใช้งาน/นำเข้า A ภายใน B ดูเหมือนว่าจะใช้ไม่ได้เช่นกัน... ควรทำอย่างไรดี? ขอบคุณล่วงหน้า