打字稿:别名长模块名称

时间:2014-01-21 20:15:07

标签: typescript

我已经查了一下,回答以下问题:

Alias External Module in TypeScript

Type reference without full namespace

但我仍然感到困惑。这不是一个“要求”,只是一种欲望。我在Typescript中使用Kendo UI和他们的MVVM架构,我发现自己经常输入这个......

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

是的,这样做很好,但它变得令人讨厌。有没有办法设置打字稿让我用一只空手?喜欢......

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

2 个答案:

答案 0 :(得分:28)

是的,有办法。 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();

答案 1 :(得分:2)

从1.4开始,我们可以使用type关键字。

  

随着TypeScript 1.3的出现,我们专注于添加更多类型   系统和ECMAScript 6功能到TypeScript。我们快点吧   看看下一步你可以使用的一些新功能   发布TypeScript。所有这些功能都在主人身上   如果您想查看它们,请在我们的GitHub存储库中进行分支   你自己今天。

     

通过这些功能,我们可以更准确,更轻松地使用   在运行时可能具有不同类型的变量和表达式。   这些功能共同帮助减少了对显式类型的需求   注释,类型断言以及“任何”的使用。类型。类型   定义文件(.d.ts)作者可以更精确地使用它们   描述外部库。对于那些继续发展的人   编译器,您会注意到我们已经在使用这些功能   今天的编译器。

有关详细信息,请访问:TypeScript 1.4 sneak peek: union types, type guards, and more

示例:

让我们创建简单的模型: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;
            }
        }
    }
}