为现有的jslibraries nameclash问题创建TypeScript定义

时间:2012-11-26 11:49:16

标签: ember.js typescript

我已经开始为Ember.js框架制作TypeScript定义。我目前的设置结构如下:

declare module Ember {
   interface Classname {
     someProperty: type;
   }
 declare var Classname: Classname;
}

为了访问这些接口,我声明了一个变量。但是在我的库中有一个名为Object的类名,这会导致带有全局范围的Object的名称缩放。

如何超越此名称标签?我是否使用正确的做法为现有库创建定义?

1 个答案:

答案 0 :(得分:2)

您可能想从GitHub中获取EmberJS定义文件:

https://github.com/borisyankov/DefinitelyTyped/blob/master/ember/ember-1.0.d.ts

这不仅可以解决您的问题,因为它具有Ember定义,但您也可以看到他们如何在名字冲突的情况下实现它:

declare module Ember {

    export class Object extends CoreObject {
        //...

这使得Object成为Ember的孩子,而不是窗口的孩子:

Ember.Object

而不是

window.Object
// or the shorthand
Object // which is window.Object