Typescript 浏览器兼容性代码不在ts中编译

Typescript 浏览器兼容性代码不在ts中编译,typescript,Typescript,我正试图将其添加到.ts文件的底部,但在VS2012中[如果(!Object.construct)]中未定义构造和扩展,则在下面得到一个错误。解决方案 if (!Object.construct) { Object.construct = function(base) { var instance = Object.create(base); if (instance.initialize) instance.initialize.apply(instance,

我正试图将其添加到.ts文件的底部,但在VS2012中[如果(!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//

您需要扩展对象接口:

interface Object {
    extend(destination, source): any;
    construct(base): any;
}

将其放在代码的根上下文中(而不是放在模块中)。您还应该添加键入,即使它只是将参数定义为“any”

您需要扩展对象接口:

interface Object {
    extend(destination, source): any;
    construct(base): any;
}

将其放在代码的根上下文中(而不是放在模块中)。您还应该添加键入,即使它只是将参数定义为“any”

您也不想在这里扩展对象接口。这是所有对象实例(即所有对象上的方法,如toString和valueOf)继承的内容。从上面看,似乎您正在尝试向对象构造函数添加静态(即类似于Object.create和Object.keys等方法)


对象构造函数在lib.d.ts文件中声明为var。无法在TypeScript的0.8.x版本中重新打开和扩展声明的变量。最简单的解决方案是为您的项目制作lib.d.ts的副本,并修改“declare var Object”语句以添加额外的函数。如果您引用自己的lib.d.ts文件(即项目文件中的“\\”,它将使用此文件而不是默认的lib.d.ts.

您不希望在此处扩展对象接口。这是所有对象实例继承的内容(即所有对象上的方法,如toString和valueOf).从上面看,似乎您正在尝试向对象构造函数添加静态(即类似于Object.create和Object.keys等方法)


对象构造函数在lib.d.ts文件中声明为变量。您不能在TypeScript的0.8.x版本中重新打开和扩展声明的变量。最简单的解决方案是为您的项目制作lib.d.ts的副本并修改“声明变量对象”语句添加额外函数。如果引用自己的lib.d.ts文件(即“\\”在你的项目文件中,它将使用这个而不是默认的lib.d.ts.

你把接口放在模块内了吗?它对我有效,这是我能想到的唯一原因。你把接口放在模块内了吗?它对我有效,这是我能想到的唯一原因。实际上,只是这样做有重复的签名,所以我t添加了第一个答案代码,它实际上起作用了,只是添加了重复的签名,所以我添加了第一个答案代码,它起作用了