【问题标题】:Is it possible to instantiate a JavaScript object in TypeScript?是否可以在 TypeScript 中实例化 JavaScript 对象?
【发布时间】:2019-12-04 01:46:34
【问题描述】:

我有一个现有的 JavaScript “类”,它的定义如下:

function Person(name, age) {
    this.name = name;
    this.age = age;
}

(我知道在 ES6 之前的 JavaScript 中没有实际的类)

这个类需要在一个用 TypeScript 编写的 Angular2 组件中使用。通常,我会像这样简单地实例化它:

var john = new Person('John Doe', 22);

将 TypeScript 代码编译成 JavaScript 时,我会收到一条错误消息 Cannot find name 'Person',因为 Person 不是 TypeScript 类。

是否有任何解决方案可以使用现有的 JavaScript 类,而无需将其重写为 TypeScript?

【问题讨论】:

  • 省略new怎么样?
  • @GünterZöchbauer 我仍然遇到同样的错误。
  • 似乎 Grezegorz 方法应该有效stackoverflow.com/questions/27417107/…
  • 请注意,即使在 ES 6 中,JavaScript 真的 也没有类,它只是常规模式的语法糖。即使在 ES 6 中,您仍然可以使用 Person.prototype

标签: javascript angular typescript


【解决方案1】:

不妨试试

declare var Person:any; // Magic
var john = new Person('John Doe', 22);

【讨论】:

    【解决方案2】:

    Grzesiek 的回答对我有用,但我需要稍作修改。

    我的 JS 对象被深埋了几个函数(以模拟命名空间)并被实例化为:

    new MyCorp.Utils.UsefulThing();

    因为我必须将声明放在 TS 命名空间中,所以我必须用“导出”标记它,以便 TS 代码(在不同的命名空间中)可以看到它,所以我最终得到:

    namespace MyCorp.Utils {
        export declare var UsefulThing: any;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2016-05-22
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2013-06-06
      相关资源
      最近更新 更多