博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Typescript 中的类的应用
阅读量:4249 次
发布时间:2019-05-26

本文共 3167 字,大约阅读时间需要 10 分钟。

类的创建

class Person {
// 属性 name: string; age: number; // 构造函数 constructor(name:string, age:number) { this.name = name; this.age = age; } // 方法 print() { console.log('name: ' + this.name + ' age: ' + this.age); }}var p = new Person('Joh', 90);p.print();

类的继承

class Human {
name: string; age: number; tell() { return this.name + ' ' + this.age; }}// Student 继承自 Humanclass Student extends Human {
school: string; // 此处Student 也必须传递构造方法 tell() { return this.name + ' ' + this.age + ' ' + this.school; }}var s = new Student();s.name = 'Joh';s.age = 90;s.school = 'MIT';console.log(s.tell());

使用super关键字继承属性

class Human {
name: string; age: number; constructor(name: string, age:number) { this.name = name; this.age = age; } tell() { return this.name + ' ' + this.age; }}// Student 继承自 Humanclass Student extends Human {
school: string; // 此处Student 也必须传递构造方法 constructor(school: string) { this.school = school; super('Joh', 90); } tell() { return this.name + ' ' + this.age + ' ' + this.school; }}var ss = new Student('MIT');console.log(s.tell());

类的访问修饰符

在ts中有两种访问修饰符:

  • public : 共有的
  • private : 私有的
class People {
// public 是默认的, 不加修饰符都是public public name:string; age:number; // private 无法访问和继承 private color:string; getInfo() { return this.name + ':' + this.age; }}class Teacher extends People {
school:string; getInfo() { return this.name + ':' + this.age + ':' + this.school; }}var t = new Teacher();t.name = 'Joh';t.age = '90';t.school = 'MIT';console.log(t.getInfo());

在constructor中也可添加修饰符

class People {
// 如下所示 constructor(public height: number){ }}
  • 在默认情况下,如果不添加访问修饰符,那么声明的属性或方法都是共有的,即:public

  • 上述 Teacher 继承自 People,继承了所有public的属性和方法

  • 如果将上述name添加private修饰符,那么编译就会报错,因为private声明的属性不会被继承

多种方式设置访问修饰符举例

class People {    public height:number;    private weight:number;    size:number;    constructor(private name:string, public age:number, color:string) {        this.name = name;        this.age = age;        this.color = color;    }    print() {        return this.name + " : " + this.age;    }    public say() {        console.log('people say!');    }    private pee() {        console.log('people pee!');    }}

以上是不同的几种设置访问修饰符的方式

  • 如果不写的话,那么就是public的
  • 访问修饰符可出现在constructor中

封装

通过 getter 和 setter 方法来设置

class Hello {
name:string; // 私有的 _age属性 private _age:number; // 普通方法 tell() { return this.name; } // getter 和 setter 来访问和设置私有方法, 为外部提供一个接口来使用 get name():string{ return this._name; } set name(n:string){ this._name = n; }}var h = new Hello():h.name = 'Joh';console.log(h.tell());

关键词 static

class Person {
name:string; // 静态属性或方法 需要使用类名来调用 static age:string; tell() { alert('Name: ' + this.name); } getInfo() { return 'Name: ' + this.name + ' ' + 'Age' + this.age; }}var p = new Person();p.name = 'Joh';Person.age = 90;p.tell();console.log(p.getInfo());

自定义类是一种引用数据类型

class Greeter {
greeting:string; constructor(message: string) { this.greeting = message; } greet() { return 'Hello, ' + this.greeting; }}var gr:Greeter; // 此处声明gr为Greeter的类型gr = new Greeter(); // 此处实例化赋值console.log(gr.greet('Joh'));

转载地址:http://tzwei.baihongyu.com/

你可能感兴趣的文章
Java基础入门(四)
查看>>
Java基础入门(十)
查看>>
Java基础入门(完结篇)
查看>>
Java进阶之面向对象(一)——继承
查看>>
Java进阶之自定义ArrayList&斗地主发牌案例
查看>>
JavaWeb之filter&listener&文件上传
查看>>
JavaWeb之Ajax&json
查看>>
BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
查看>>
转载:在 Windows 10 下遇到移动硬盘不自动分配盘符的问题
查看>>
DDR2 SSTL_18标准
查看>>
DDR3的DQS_p/n信号电平摆幅变化不一致现象
查看>>
北大旁听生中的历史名人
查看>>
大唐凌烟阁开国廿四将
查看>>
Access数据库出现"Selected collating sequence not supported by the operating system."错误
查看>>
逻辑思维测试题
查看>>
如何用Easy CHM制作CHM格式电子书(帮助文档)
查看>>
为什么学习python
查看>>
华为进不了美国,并不是贸易保护这么简单
查看>>
markdown文件的基本常用编写语法(图文并茂)
查看>>
java变量简介
查看>>