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;