我正在尝试将其添加到.ts文件的底部,但是我在VS2012中遇到错误[在 if(!Object.construct)]下,构造和扩展未定义。溶液
if (!Object.construct) {
Object.construct = function(base) {
var instance = Object.create(base);
if (instance.initialize)
instance.initialize.apply(instance, [].slice.call(arguments, 1));
return instance;
}
}
if (!Object.extend) {
Object.extend = function(destination, source) {
for (var property in source) {
if (source.hasOwnProperty(property))
destination[property] = source[property];
}
return destination;
};
}
尝试了这个:
interface Object {
extend(destination, source): any;
construct(base): any;
}
class Game { etc//
答案 0 :(得分:2)
您不希望在此处扩展Object接口。这是所有对象实例(即所有对象上的方法,如toString和valueOf)继承的内容。从上面看,您似乎正在尝试向Object构造函数添加静态(即类似于Object.create和Object.keys等方法)。
Object构造函数在lib.d.ts文件中声明为var。你不能重新打开&在TypeScript的0.8.x版本中扩展声明的变量。最简单的解决方案是为您的项目制作lib.d.ts的副本,并修改“declare var Object”语句以添加您的额外功能。如果您引用自己的lib.d.ts文件(即项目文件中的“\\”,它将使用它而不是默认的lib.d.ts。
答案 1 :(得分:1)
您需要扩展Object接口:
interface Object {
extend(destination, source): any;
construct(base): any;
}
将其放在代码的根上下文中(不在模块内)。您还应该添加输入,即使它只将参数定义为“any”