是否可以在TypeScript中实例化JavaScript对象?

时间:2016-10-31 11:26:27

标签: javascript angular typescript

我有一个现有的JavaScript“class”,其定义如下:

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?

2 个答案:

答案 0 :(得分:6)

也许试试

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

答案 1 :(得分:0)

Grzesiek的答案对我有用,但我需要进行一些修改。

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

new MyCorp.Utils.UsefulThing();

因为我不得不将声明放置在TS名称空间中,所以必须将其标记为“导出”,以便TS代码(在不同名称空间中)可以看到该声明,所以我得出以下结论:

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