说我在打字稿中有一个班级。
class MyAnimal {
constructor(param1, param2) {
voice: param1;
height: param2;
}
}
如何实际构造类,以便在使用对象时可以访问这些属性:
var gorilla = new MyAnimal(param1, param2);
以上产生编译错误:Error TS2094: "The property voice does not exist on value of type 'MyAnimal'."
我将它转换为javascript,它工作正常,但是它看起来像这样:
var MyAnimal = function (param1, param2) {
return {
voice: param1,
height: param2,
}
}
有了这个,我可以整天访问属性
var gorilla = MyAnimal(param1, param2);
if (gorilla.height < 5)
alert("It's a baby gorilla!");
我对Typescript / javascript很新,所以还有很多我还在想弄清楚。我不认为应该很难访问属性。我怀疑我只是想错误地访问它。
我只是把课程弄错了吗?
当我新建MyAnimal
的实例时,为什么我无法检索属性?
答案 0 :(得分:2)
constructor(param1, param2) {
voice: param1;
height: param2;
}
此代码简单地定义了两个名为“voice”和“height”的语句标签,并且不对参数执行任何操作。相反,你想要做的是:
class MyAnimal {
voice: string;
height: number;
constructor(param1, param2) {
this.voice = param1;
this.height = param2;
}
}
您可能需要阅读TypeScript Tutorials以了解该语言的基础知识。
答案 1 :(得分:1)
这可能是修复代码的最简单方法。这会自动从构造函数参数创建公共属性。
class MyAnimal {
constructor(public voice, public height) {
}
}
所以现在你可以这样做:
var animal = new MyAnimal("rawr", 23);
// use animal.voice