Typescript: псевдоним длинного имени модуля

Я уже это рассмотрел, перейдя к следующим вопросам:

Внешний модуль Alias ​​в TypeScript

Ссылка на тип без полного пространства имен

Но я все еще смущен. Это не "требование", просто желание. Я использую Kendo UI и их MVVM-архитектуру в Typescript, и я постоянно набираю это...

class Item extends ItemPrototype {
   public Quality: kendo.data.ObservableObject = new kendo.data.ObservableObject();
}

Да, это прекрасно работает, но он становится неприятным. Есть ли способ, которым я могу настроить typescript, чтобы позволить мне использовать короткую руку? Как...

class Item extends ItemPrototype {
   public Quality: observable = new observable();
}

Ответ 1

Да, есть способ. import может использоваться для импорта модуля или для определения имени типа, чтобы сделать его короче. Вот пример последнего:

declare module alpha.bravo.charlie {
    export class Delta {
        constructor();
    }
}

import Delta = alpha.bravo.charlie.Delta;
var d: Delta = new Delta();

Вы также можете сохранить ввод текста, позволяя системе ввода типа выполнить некоторую работу.

var d = new Delta();

Ответ 2

Из 1.4 мы можем использовать ключевое слово type.

С выходом TypeScript 1.3 мы сосредоточимся на добавлении большего количества типов и ECMAScript 6 для TypeScript. Пусть быстро посмотрите на некоторые новые функции, которые вы сможете использовать в следующем релиз TypeScript. Все эти функции живут в мастер ответьте на наш репозиторий GitHub, если вы хотите проверить их себя сегодня.

С помощью этих функций мы можем более точно и легко работать с переменные и выражения, которые могут иметь разные типы во время выполнения. Вместе эти функции помогают уменьшить необходимость в явном типе аннотации, утверждения типа и использование типа "any". Тип (.d.ts) авторы могут использовать их более точно описать внешние библиотеки. Для тех, кто компилятор, вы заметите, что мы уже используем эти функции в компилятор сегодня.

Для получения дополнительной информации посетите: TypeScript 1.4 sneak peek: типы соединений, тип защиты и т.д.

Пример:

Позвольте создать простую модель: basemodel.ts

module NameSpace {
    export module Model {
        export class BaseModel {
            public Id: number;
            public Name: string;
        }
    }
}

и мы должны использовать эту модель в нашем контроллере.

/// <reference path="path to base model.ts" />

type BaseModel = NameSpace.Model.BaseModel;

module NameSpace {
    export module Controller {
        export class BaseController  {
            public entities: new Array<BaseModel>();

            constructor(externalEntities: Array<BaseModel>) {
                this.entities = externalEntities;
            }
        }
    }
}