当前位置: 首页 > news >正文

【TS系列】TypeScript进阶(三)

走进TypeScript

  • 章节回顾:
  • 【TS系列】初识TypeScript
  • 【TS系列】TypeScript之基本类型
  • 【TS系列】TypeScript进阶(一)
  • 【TS系列】TypeScript进阶(二)
    • 一、TypeScript 类
      • 1. 类的属性与方法
      • 2. 访问器
      • 3. 类的继承
      • 4. ECMAScript 私有字段
  • 小结

章节回顾:

【TS系列】初识TypeScript

【TS系列】TypeScript之基本类型

【TS系列】TypeScript进阶(一)

【TS系列】TypeScript进阶(二)

如果文章有什么需要改进的地方还请大佬不吝赐教👏👏
在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

一、TypeScript 类

1. 类的属性与方法

在面向对象语言中,类是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的属性和方法。

在 TypeScript 中,我们可以通过 Class 关键字来定义一个类:

class Greeter {
  // 静态属性
  static cname: string = "Greeter";
  // 成员属性
  greeting: string;

  // 构造函数 - 执行初始化操作
  constructor(message: string) {
    this.greeting = message;
  }

  // 静态方法
  static getClassName() {
    return "Class name is Greeter";
  }

  // 成员方法
  greet() {
    return "Hello, " + this.greeting;
  }
}

let greeter = new Greeter("world");

那么成员属性与静态属性,成员方法与静态方法有什么区别呢?这里无需过多解释,我们直接看一下以下编译生成的 ES5 代码:

"use strict";
var Greeter = /** @class */ (function () {
    // 构造函数 - 执行初始化操作
    function Greeter(message) {
        this.greeting = message;
    }
    // 静态方法
    Greeter.getClassName = function () {
        return "Class name is Greeter";
    };
    // 成员方法
    Greeter.prototype.greet = function () {
        return "Hello, " + this.greeting;
    };
    // 静态属性
    Greeter.cname = "Greeter";
    return Greeter;
}());
var greeter = new Greeter("world");

2. 访问器

在 TypeScript 中,我们可以通过 gettersetter 方法来实现数据的封装和有效性校验,防止出现异常数据。

let passcode = "Hello TypeScript";

class Employee {
  private _fullName: string;

  get fullName(): string {
    return this._fullName;
  }

  set fullName(newName: string) {
    if (passcode && passcode == "Hello TypeScript") {
      this._fullName = newName;
    } else {
      console.log("Error: Unauthorized update of employee!");
    }
  }
}

let employee = new Employee();
employee.fullName = "Semlinker";
if (employee.fullName) {
  console.log(employee.fullName);
}

3. 类的继承

继承 (Inheritance) 是一种联结类与类的层次模型。指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。

在 TypeScript 中,我们可以通过 extends 关键字来实现继承:

class Animal {
  name: string;
  
  constructor(theName: string) {
    this.name = theName;
  }
  
  move(distanceInMeters: number = 0) {
    console.log(`${this.name} moved ${distanceInMeters}m.`);
  }
}

class Snake extends Animal {
  constructor(name: string) {
    super(name);
  }
  
  move(distanceInMeters = 5) {
    console.log("Slithering...");
    super.move(distanceInMeters);
  }
}

let sam = new Snake("Sammy the Python");
sam.move();

4. ECMAScript 私有字段

在 TypeScript 3.8 版本就开始支持ECMAScript 私有字段,使用方式如下:

class Person {
  #name: string;

  constructor(name: string) {
    this.#name = name;
  }

  greet() {
    console.log(`Hello, my name is ${this.#name}!`);
  }
}

let semlinker = new Person("Semlinker");

semlinker.#name;
//     ~~~~~
// Property '#name' is not accessible outside class 'Person'
// because it has a private identifier.

与常规属性(甚至使用 private 修饰符声明的属性)不同,私有字段要牢记以下规则:

  • 私有字段以 # 字符开头,有时我们称之为私有名称;
  • 每个私有字段名称都唯一地限定于其包含的类;
  • 不能在私有字段上使用 TypeScript 可访问性修饰符(如 public 或 private);
  • 私有字段不能在包含的类之外访问,甚至不能被检测到。

小结

以上就是关于TypeScript的进阶内容介绍,根据一些参考资料作出总结,如果侵权,请联系删除!!谢谢!
后续将会围绕TypeScript相关内容及其知识点不定期持续更新,感谢一路有你们的关注和陪伴!
(若有错误,请批评改正,谢谢~)

相关文章:

  • wordpress Campress/百度新闻最新消息
  • 西宁好的网站建设公司/嘉兴seo外包公司费用
  • 做淘宝要用的网站/优化最狠的手机优化软件
  • 站内搜索本网站怎么做/搜索网站的浏览器
  • 建站哪家好 discuz/上海网站seo
  • 小型企业网站建设项目/百度关键词优化曝光行者seo
  • 【鸟哥杂谈】三分钟完成腾讯云部署emqx,公网访问自己的mqtt服务器
  • Java泛型01:什么是泛型?
  • 【Python】for/else、列表的创建、查询、删除、修改、排序、列表生成式
  • 基于技能优化算法的函数寻优算法
  • MySql(25)索引及索引优缺点
  • 【C++】哈希应用
  • 【3D建模制作技巧分享】Maya制作骑自行车的女孩模型
  • 《一个月冲刺祥云杯》(2)需要的html典例以及PHP基础
  • Spring学习阶段性总结
  • CET4之翻译
  • 简单了解泛型和包装类
  • 串口使用系列学习之什么是流控