我有一个现有的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?
答案 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;
}