如何为自定义类创建Typescript声明文件而不需要/ import / export

时间:2017-03-10 12:51:32

标签: javascript typescript typescript-typings

希望有人可以帮助我理解打字稿声明文件以及如何访问我自定义的类。

因此,让我们假设我有一个自定义类来显示警告消息作为示例:

CustomAlert.ts:

/// <reference path="typings/CustomAlert.d.ts" />
module MdlCustomAlerts{    
    class CustomAlert{
        constructor(alertMessage:string, alertOptions:IAlertOptions){
            alert(message);
        }
    }
}

CustomAlert.d.ts

declare module MdlCustomAlerts{
    interface IAlertOptions{

    }

    class CustomAlert{
      constructor(alertMessage:string, alertOptions:IAlertOptions)
    }
}

app.ts

/// <reference path="typings/MyAlert.d.ts" />

var alert1 = new MdlCustomAlerts.CustomAlert("Hello World", {});

首先,我在CustomAlert.ts中收到“重复标识符”错误,因为定义中定义了类CustomAlert。我需要一种方法来访问我的CustomAlert,使用定义而不使用import / require(我们不使用require.js,因此这会导致问题)。

我认为我需要做一些事情,例如导出类的公共标识符(可能将定义中的类重命名为customAlert然后导出引用)但我似乎无法做任何工作。如果有人能帮助我找到解决方案,我将非常感激!

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以直接从其他打字稿文件中引用typescript fies;你不需要它们的类型定义。

类型定义用于键入javascript文件,以便从Typescript中使用。

...你应该使用模块(ES6 / commonJS - 而不是现在称为名称空间的模块)。如果不这样做,随着您的应用程序变得越来越大,您将陷入噩梦般的问题,即订购TS文件以获得正确的编译。

<强> CustomAlert.ts

export class CustomAlert{
  constructor(alertMessage:string, alertOptions:IAlertOptions){
    alert(message);
  }
}

<强> app.ts

import {CustomAlert} from './CustomAlert'

var alert1 = new CustomAlert("Hello World", {});