虽然掌握了TypeScript的模块导入/导出系统,仍然躲避我,感觉就像一个黑暗的艺术只能由那些不能被命名的人掌握...... 我和#39;我试图了解如何使以下导入更清洁
B.ts
export module System {
export class Bravo {
constructor(n: number) {
console.log(`Bravo ${n}`);
}
}
}
A.ts
import {System as System1} from "./B";
export module System {
export class Alpha extends System1.Bravo {
constructor() {
super(123);
}
}
}
我不喜欢这个
import { System as System1 }
extends System1.Bravo
对我来说,像拇指一样伸出来!有没有办法让它更清洁?
import { System.Bravo } from "./B";
extends Bravo
这样的东西?
作为旁注,我实际想要实现的是
System.Foo.Bar.MyAwesomeClass
。答案 0 :(得分:2)
这是一种不同的方法,但应该产生您正在寻找的相同结果。
您可以使用文件系统将所有文件放在带有System
文件的联合模块中,而不是使用模块index.ts
。所以有一个名为System
的目录。所以做这样的事情:
/System/Bravo.ts
export default class Bravo {
constructor(n: number) {
console.log(`Bravo ${n}`);
}
}
/System/Alpha.ts
import Bravo from "./Bravo"
export default class Alpha extends Bravo {
constructor() {
super(123);
}
}
然后包含一个包含两者的index.ts
文件。
/System/index.ts
import Alpha from "./Alpha";
import Bravo from "./Bravo";
export { Alpha };
export { Bravo };
然后,无论何时您想要导入整个模块,您都可以:
import * as System from "<relativePath>/System";
let alphaClass = new System.Alpha();
let bravoClass = new System.Bravo(1);
同样,如果你只想要Alpha
,那么你可以直接导入它:
import { Alpha } from "<relativePath>/System";
let alphaClass = new Alpha();