• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

TypeScript 参数属性

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

假设类中创建的 readonly 类型的属性,该类型的属性只能在声明处或构造器中进行初始化。

class Octopus {
    readonly name: string;
    readonly numberOfLegs: number = 8;
    constructor (theName: string) {
        this.name = theName;
    }
}

为了初始化 name 属性,不得不在构造器中声明另一个入参 theName。这显得冗余。

TypeScript 提供了在构造器上同时完成属性的声明和初始化的功能。

以下代码和上面的等效:

class Octopus {
    readonly numberOfLegs: number = 8;
    constructor(readonly name: string) {
    }
}

这种通过在构造器的入参中声明属性的方式叫作 Parameter properties

通过在构造器入参上添加访问限定符(accessibility modifier ),readonly 或两者结合,该参入便会成为类的属性。

一个比较综合的示例:

class Foo {
  a: string;
  public b: string;
  protected c: string;
  constructor(d: number, public e: string) {}
}

var foo = new Foo(1, "2");

console.log(foo.a); //a 没有修饰词,和 C++ struct 默认公有表现一样为 public,与 C++ class 默认私有刚好相反
console.log(foo.b); //b 是公有
console.log(foo.c); // ???? a protected 只能自己和继承类中访问
console.log(foo.d); // ???? d 没有修饰词,不是入参属性,类上面没有该属性
console.log(foo.e); //a 通过构造器创建的 public 属性

相关资源


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript函数基本知识发布时间:2022-07-18
下一篇:
typescript比javascript多的功能发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap