TypeScript是否允许types别名?

所以我希望我可以用一个别名来看起来像这样的丑陋的types:

core.Maybe<core.Promise<info.Paged<info.Carrier>, core.Problem>>[] 

就像是:

 import Pew = core.Maybe<core.Promise<info.Paged<info.Carrier>, core.Problem>>[]; 

有没有办法在TypeScript中input别名?

从版本1.4 Typescript支持types别名( 源 )。

types别名

您现在可以使用type关键字为一个types定义一个别名:

 type PrimitiveArray = Array<string|number|boolean>; type MyNumber = number; type NgScope = ng.IScope; type Callback = () => void; 

types别名与原始types完全相同; 他们只是替代名称。

从版本1.6开始,Typescript支持genericstypes别名( source )。

genericstypes别名

引导到TypeScript 1.6,types别名被限制为缩短长types名称的简单别名。 不幸的是,如果不能够使这些通用的,他们有限的使用。 我们现在允许types别名是通用的,给他们充分的expression能力。

 type switcharoo<T, U> = (u: U, t:T)=>T; var f: switcharoo<number, string>; f("bob", 4); 

TypeScript支持导入,例如:

 module A { export class c { d: any; } } module B { import moduleA = A; var e: moduleA.c = new moduleA.c(); } module B2 { import Ac = Ac; var e: Ac = new Ac(); } 

更新1

从TS 1.4开始,我们可以使用types声明:

 type MyHandler = (myArgument: string) => void; var handler: MyHandler; 

由于TS 1.6我们可以使用本地types声明:

 function f() { if (true) { interface T { x: number } let v: T; vx = 5; } else { interface T { x: string } let v: T; vx = "hello"; } } 

一个穷人的解决scheme是声明一个虚拟variables(例如t )与所需的types和使用typeof t代替长型expression式:

 var t:{(x:number,f:{(foo:string,bar:boolean):void}):void};

 var f:typeof t;
 var g:typeof t;