【问题标题】:How to use create an instance of a class without importing it如何使用创建类的实例而不导入它
【发布时间】:2015-10-23 10:05:24
【问题描述】:

我使用 import 语句在我的 TypeScript 应用程序中导入大多数类:

import {Logger, getLogger} from "aurelia-logging";
import {HttpResponseMessage} from "aurelia-http-client";

class ErrorHandler {
    logger:Logger = getLogger("Error-Handler");
    handleError(message: any) : void {
        this.logger.error(message);
    }
    handleHttpError(response: HttpResponseMessage) {
        this.logger.error(response.content.error_description);
    }
}

但是,我发现了一些可以执行此操作的示例代码:

entityManager = new breeze.EntityManager(Settings.serviceName);

但是,微风不会在任何地方导入。

我不明白它是如何工作的。微风有一个 .d.ts 文件,但我在项目中的任何地方都看不到它被导入的任何地方。 Visual Studio 将“breeze”识别为命名空间,将 EntityManager 识别为类。我相信它是直接从 TDF 获得的。

class EntityManager {...}

该类也未导出。我认为它必须导出:

export class EntityManager{...}

不必使用导入/导出语句似乎要简单得多,但我不明白这是如何实现的。

【问题讨论】:

    标签: typescript breeze typescript1.6


    【解决方案1】:

    我不明白它是如何工作的。微风有一个.d.ts文件,但我看不到它在项目的任何地方导入的任何地方

    如果库污染(使用)全局命名空间,它将起作用。当前的微风定义:https://github.com/borisyankov/DefinitelyTyped/blob/44cbde48eecd1918ed54b3be49a9752688b6c65a/breeze/breeze.d.ts 在全球范围内有效。它是一个全局模块,因为根级别没有 import/export (more)。

    运行时也是如此(通过添加到window)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      相关资源
      最近更新 更多