码迷,mamicode.com
首页 > 其他好文 > 详细

TypeScript 参数属性

时间:2019-09-25 00:59:39      阅读:358      评论:0      收藏:0      [点我收藏+]

标签:comment   types   pre   构造   type   ted   通过   c++ class   this   

假设类中创建的 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` 属性

相关资源

TypeScript 参数属性

标签:comment   types   pre   构造   type   ted   通过   c++ class   this   

原文地址:https://www.cnblogs.com/Wayou/p/typescript_parameter_property.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!