4

抱歉,如果答案很简单,或者我误读了打字稿文档,但是..

我有一个模块:

module Utils{

    export function MyFunction(str: string):string {
        return // something to do with string
    }

}

我想在另一个 .ts 文件(Clients.ts)中使用它,所以在顶部我添加了一个引用并尝试使用它:

/// <reference path="Utils.ts" />
Utils.MyFunction(str);

但是得到以下错误:

/*

Compile Error. 
See error list for details
 [path]/Clients.ts(26,39): error TS2095: Could not find symbol 'Utils'.
 [path]/Clients.ts(30,49): error TS2095: Could not find symbol 'Utils'.
error TS5037: Cannot compile external modules unless the '--module' flag is provided.


*/

谁能解释我做错了什么?

使用 VS2012、Web Essentials 和 TypeScript 0.9.1

谢谢。

4

2 回答 2

5

自己找到了答案。我实际上在寻找的是一个类的静态方法。根据以下内容:

class Utils {

    static MyFunction(str: string): string {
        return //... do something with string
    }
}

这在 Client.ts 中有效

/// <reference path="Utils.ts" />
var x = Utils.MyFunction(str);
于 2013-08-29T14:43:39.770 回答
2

你得到的错误error TS5037: Cannot compile external modules unless the '--module' flag is provided.不是你的代码会得到的。

仅当您在文件的根级别导出某些内容时,您才会得到此信息。例如

export module Utils{ // Notice the export keyword 

    export function MyFunction(str: string):string {
        return // something to do with string
    }

}

在这种情况下,您使用的是外部模块加载器,打字稿需要知道它是amd(requirejs/browser) 还是commonjs(node/server side)

PS:我做了一个关于这个主题的视频:http ://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

于 2013-08-29T11:19:31.290 回答