不知何故,如果没有关于代码未正确标记的错误,我就无法提出这个问题,所以我将其中的大部分内容移到了 GitHub: https ://github.com/JoepBC/typescript-packages-example-error
问题归结为:使用 GitHub 上的包结构(使用 TypeScript、webpack 和 ts-loader),我有两个包 LibA 和 LibB,其中 LibB 想要从编译的 LibA TS->JS 代码中加载对象( LibA 的 .d.ts 定义文件创建良好)。
'~/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 生成的 javascript 代码按预期运行。Lib B 尝试从 A 导入(因为 A 从同一个包中的另一个文件 [虽然未编译] 导入),并且来自 A 的 javascript 代码可以在 B 中运行,但在 BI 中无法从来自的类启动新对象一个。
运行 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)
在 B 中要求/导入 A 的不同方式似乎也不起作用......应该怎么做?提前致谢。