【问题标题】:TypeScript / Import & Export of modules / classes - Runtime error when running imported classTypeScript / 模块/类的导入和导出 - 运行导入的类时出现运行时错误
【发布时间】:2012-10-14 19:35:42
【问题描述】:

我正在使用 TypeScript。

我在 String.ts 文件中有以下内容:

module Sgc.Sys {
    "use strict";
    export class String {       
        static trim(input: string): string {
            return input.replace(/^\s+|\s+$/g, "");
        };
//-- other methods below ...
    }
}

然后在文件 Number.ts 中(位于 String.ts 的同一文件夹中)我使用上面定义的方法 Sgc.Sys.String.trim():

module Sgc.Sys {
    "use strict";
    export class Number {

    static someMethod(input : string) : string {
            //-- some code
            var str = Sgc.Sys.String.trim(input);
            return str;

        };
    }
}

问题:Sgc.Sys.String 的方法 trim 必须如上定义/调用才能被 TypeScript 无错误地接受;但是,在运行时 Sgc.Sys.String 未定义,因此 Sgs.Sys.String.trim(input) 会触发异常。

当 String.ts 和 Number.ts 都在同一个文件夹中时,我应该怎样才能从 Sgc.Sys.Number 中调用 Sgc.Sys.String.trim ..\Sgc\Sys ?

谢谢, MG

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    您必须添加对 Number.ts 文件的引用:

    /// <reference path="String.ts" />
    

    【讨论】:

      【解决方案2】:

      如果您在运行时遇到错误,您需要确保在您的页面上包含两个编译好的 JavaScript 文件。

      根据您的代码示例,我假设您没有使用模块加载。

      <script src="/Sgc/Sys/String.js"></script>
      <script src="/Sgc/Sys/Number.js"></script>
      

      补充说明...

      TypeScript 默认以 ECMAScript 3 为目标,因此您的“使用严格”语句不会有任何效果 - 您需要针对此功能以 ECMAScript 5 为目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 1970-01-01
        • 2015-07-19
        • 2021-10-24
        • 2015-05-08
        • 2019-06-11
        • 1970-01-01
        相关资源
        最近更新 更多