TypeScript是否允许输入别名?

时间:2014-02-17 21:33:17

标签: typescript

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

Maybe<Promise<Paged<Carrier>, Problem>>[]

类似的东西:

import Response = Maybe<Promise<Paged<Carrier>, Problem>>[];

有没有办法在TypeScript中输入别名?

3 个答案:

答案 0 :(得分:110)

从版本1.4开始,Typescript支持类型别名(source)。

  

输入别名

     

现在可以使用type关键字为

定义类型的别名
type PrimitiveArray = Array<string|number|boolean>;
type MyNumber = number;
type NgScope = ng.IScope;
type Callback = () => void;
     

类型别名与原始类型完全相同;它们只是替代名称。

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

  

通用类型别名

     

导致TypeScript 1.6,类型别名仅限于缩短长类型名称的简单别名。不幸的是,如果不能制作这些通用的,它们的用途有限。我们现在允许类型别名是通用的,赋予它们完整的表达能力。

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

答案 1 :(得分:10)

TypeScript支持导入,例如:

module A {
    export class c {
        d: any;
     }
}

module B {
    import moduleA = A;

    var e: moduleA.c = new moduleA.c();
}

module B2 {
    import Ac = A.c;

    var e: Ac = new Ac();
}

更新1

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

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

var handler: MyHandler;

从TS 1.6开始,我们可以使用本地类型声明:

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

答案 2 :(得分:7)

穷人的解决方案是声明一个具有所需类型的虚拟变量(例如t)并使用typeof t而不是long类型表达式:

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

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