我正在尝试在Angular2项目中使用initWithFrame
构造函数,我对如何使用TypeScript
构造函数初始化变量感到困惑:
class
现在我将在课堂上使用它:
function Auto () {
this.move = function () {
console.log('move');
}
this.stop = function () {
console.log('stop');
}
}
当我尝试编译时,我收到此错误class Car {
constructor(private _auto: Auto) {
}
onMove() {
this._auto.move();
}
}
,所以有人可以帮我理解发生了什么吗?
为什么Cannot find name Auto
使private _auto: Auto
成为_auto
类的新实例?
更新:我知道我可以使用Auto
来解决问题,但我想了解为什么class
函数会抛出此错误。
答案 0 :(得分:0)
问题正在发生,因为创建函数不会为编译器创建一个类型,因此Auto
不作为类型存在。现在它只被称为函数的名称。
解决此问题的最简单方法是使用Auto
的类代替:
class Auto {
move() {
console.log('move');
}
stop() {
console.log('stop');
}
}
然后你可以这样做:
let auto = new Auto();
let car = new Car(auto);
或者,您可以手动描述函数的类型。这是一个例子,但不要这样做,因为你应该把它转换成一个类:
interface AutoConstructor {
new(): Auto;
}
interface Auto {
move(): void;
stop(): void;
}
let Auto: AutoConstructor = function() {
let self = this as Auto;
self.move = function () {
console.log('move');
}
self.stop = function () {
console.log('stop');
}
} as any;
let auto = new Auto();
let car = new Car(auto); // ok