3

假设我在 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

4

2 回答 2

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 教程以了解该语言的基础知识。

于 2013-11-13T21:46:58.010 回答
2

这可能是修复代码的最简单方法。这会自动从构造函数参数创建公共属性。

class MyAnimal {
       constructor(public voice, public height) {
   }
}

所以现在你可以这样做:

var animal = new MyAnimal("rawr", 23);

// use animal.voice
于 2013-11-13T21:47:26.613 回答