Поэтому я хотел бы использовать псевдоним для уродливого типа, который выглядит так:
Maybe<Promise<Paged<Carrier>, Problem>>[]
Что-то типа:
import Response = Maybe<Promise<Paged<Carrier>, Problem>>[];
Есть ли способ использовать псевдонимы типов в TypeScript?
typescript
Трезубец Д'Гао
источник
источник
Ответы:
Начиная с версии 1.4 Typescript поддерживает псевдонимы типов ( источник ).
А начиная с версии 1.6 Typescript поддерживает псевдонимы универсального типа ( источник ).
источник
type MyMap = Map<string, string>; let map = new MyMap();
new
вызов или сгенерировать код для псевдонима типа. И это в целом противоречит философии TS и целям дизайна . Вы всегда можете создать свой собственныйMyMap
класс или функцию, которая будетMap<string, string>;
Map
этого есть открытая проблема.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
вместо выражения длинного типа:источник