繁体   English   中英

在Typescript中访问类的属性

[英]Access properties of a class in Typescript

假设我在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实例时无法检索属性?

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

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

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

所以现在你可以这样做:

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

// use animal.voice

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM