我最近一直在使用TypeScript 1.4,我正在尝试了解type aliases via the type
keyword的正确用法。为了添加一些上下文,我有一堆我用这种方式构建的TypeScript文件:
module A.B.C {
export class MyClass {
// ...
}
}
为了避免使用var thing:A.B.C.MyClass
,我一直试图以各种方式使用type
关键字,每个都有自己的问题:
我做的第一次尝试是将这些语句放在文件的顶部,在module
语句之上:
type MyClass = A.B.C.MyClass;
module D.E {
// Yada yada.
}
但是,当我在另一个文件中执行此操作时,编译器并不喜欢我在两个文件中两次使用相同的语句。
我的下一个想法是将声明放在模块定义中:
module D.E {
type MyClass = A.B.C.MyClass;
// ...
}
这种方法运作良好一段时间,但在尝试将new MyClass
分配给类成员时遇到了某种歧义错误。例如:
module D.E {
type MyClass = A.B.C.MyClass;
export class AnotherClass {
private thing:MyClass;
constructor() {
this.thing = new MyClass(); // Error is here.
}
}
}
结果:
指定的表达式类型
D.E.MyClass
无法分配给类型A.B.C.MyClass
显然,我正在以错误的方式接近这一点。实现我想做的事情的正确方法是什么?我怀疑我的第一次尝试更接近正确,并且那些type
语句只属于某个文件?
答案 0 :(得分:1)
然而,一旦我在另一个文件中执行此操作,编译器就不喜欢我在两个文件中两次使用相同的语句。
不要再做两次。只需在像globals.ts
BTW:我建议您不要使用内部模块(heres why),我建议您使用外部模块:https://www.youtube.com/watch?v=KDrWLMUY0R0
请勿将type
用于代码中要使用的内容。仅对type
声明空间中的内容使用type annotation
。
要对别名进行别名,您需要使用var
。如下所示:
module a.b {
export class Foo {
constructor(a, b) {
}
}
}
var Bar = a.b.Foo;
var b = new Bar(1, 2);
我再也无法警告你使用--out
的危险。