[typescript] TypeScript는 유형 별칭을 허용합니까?

그래서 나는 다음과 같은 추악한 유형에 별칭을 사용할 수 있기를 바랍니다.

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

다음과 같은 것 :

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

TypeScript에서 유형 별칭을 수행하는 방법이 있습니까?



답변

버전 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);


답변

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";
    }
}


답변

가난한 사람의 해결책은 t원하는 유형 으로 더미 변수 (예 :)를 선언 typeof t하고 long 유형 표현식 대신 사용하는 것입니다.

var t : {(x : 숫자, f : {(foo : 문자열, bar : boolean) : void}) : void};

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


답변