是否可以在TypeScript中实例化JavaScript对象?
我有一个现有的JavaScript“类”,其定义如下:是否可以在TypeScript中实例化JavaScript对象?,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个现有的JavaScript“类”,其定义如下: function Person(name, age) { this.name = name; this.age = age; } var john = new Person('John Doe', 22); (我知道在ES6之前的JavaScript中没有实际的类) 此类需要在用TypeScript编写的Angular2组件中使用。通常,我会简单地将其实例化如下: function Person(name, age) {
function Person(name, age) {
this.name = name;
this.age = age;
}
var john = new Person('John Doe', 22);
(我知道在ES6之前的JavaScript中没有实际的类)
此类需要在用TypeScript编写的Angular2组件中使用。通常,我会简单地将其实例化如下:
function Person(name, age) {
this.name = name;
this.age = age;
}
var john = new Person('John Doe', 22);
在将TypeScript代码编译成JavaScript时,我会得到一个错误,即找不到名称“Person”
,因为Person不是TypeScript类
是否有任何解决方案可以使用现有的JavaScript类,而不将其重写为TypeScript?也许可以尝试一下
declare var Person:any; // Magic
var john = new Person('John Doe', 22);
格泽西耶克的回答对我有用,但我需要一点修改 我的JS对象被深埋了几个函数(用来模拟名称空间)&实例化如下:
新建MyCorp.Utils.UsefulThing()代码>
因为我必须将声明放在TS名称空间中,所以我必须用“export”标记它,以使其对TS代码可见(位于不同的名称空间中),因此我最终得到:
namespace MyCorp.Utils {
export declare var UsefulThing: any;
}
如果省略新的
,@GünterZöchbauer,我仍然会遇到同样的错误。Grezegorz方法似乎应该有效注意,JavaScript即使在ES 6中也没有真正的类,它只是规则模式的语法糖分。即使在ES 6中,您仍然可以与Person.prototype混为一谈。