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