2014-06-07 32 views
2

我在AMD模式下使用typescript(使用requirejs)。Typescript + Require.js:扩展String原型并导入该模块

比方说,我要添加到字符串的函数,在现阶段,我做的事:

扩展/ String.ts

interface String { 
    startsWith(str: string): boolean; 
} 

define(() => { 
    String.prototype.startsWith = function (str) 
    { 
     return (this.match("^" + str) == str); 
    }; 
}); 

这工作,并产生正确的.js文件和我我能够在非打字稿requirejs模块中使用。

如何在打字稿类中“导入”这个requirejs模块?

在想要使用新功能的类的文件,这不起作用:

类型/ SampleClass.ts

import ExtensionsString = require("Extensions/String"); 

我得到这个错误:

"unable to resolve external module '"Extensions/String"'

如何使打字稿将“Extensions/String”添加到依存关系列表中

类型/ SampleClass.js

define("SampleClass", ["Extensions/String"], function(/* no need to have parameter */){ 

... 

}); 

感谢您的帮助!

+0

''申报模块“扩展/字符串” {...}'' –

+0

你自己的答案可以工作,但你的String.ts是内部(TS)和外部(AMD)模块之间的混合。你想要哪一个String.ts? – coudy

+0

如果我使用内部模块(非混合),它会是什么样子? –

回答

1

我找到了解决办法,我只需要添加下面一行在SampleClass.ts文件,而不是使用进口:

/// <amd-dependency path="Extensions/String" />