在Typescript中访问类的属性

时间:2013-11-13 21:40:39

标签: javascript typescript

说我在打字稿中有一个班级。

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的实例时,为什么我无法检索属性?

2 个答案:

答案 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