Typescript学习笔记——类

一、面向对象

二、类的简单使用

使用class关键字来定义类,类中包含两个部分:属性+方法

class Person {
  //定义类属性
  name='ts';

  //方法
  sayhello(){
    console.log('Hello,TS',"实例方法");
  }
};

其中不论属性还是方法,都分为直接定义实例的和使用static开头的静态的(类的)
其中实例的需要通过对象的实例才能访问,而类的可以通过类直接访问。

class Person {
  //定义类属性
  
  //直接定义的属性是实例属性,需要通过对象的实例才能访问。
  name='ts';
  
  //使用static开头的属性是静态属性(类属性),可以通过类直接访问
  static age=10;

  //方法
  //实例方法
  sayhello(){
    console.log('Hello,TS',"实例方法");
  }

  //静态方法
  static statichello(){
    console.log('Hello,TS',"类方法");
  }
};

const per=new Person();
console.log(per,"实例对象");
console.log(Person,"类本身");
console.log(per.name,"实例属性");
per.sayhello();
console.log(Person.name,"实例属性",Person.age,"类属性");
Person.statichello();

输出结果如下图

当然还可以在属性前面加readonly使属性变成只读不能编辑的

class Person {
  //定义类属性
  readonly name='ts';
};

三、类的构造函数和this

以上是类的简单使用,在实际开发中这是不合理的,博主由于之前学习的java,记得类里面可以包含属性,构造函数,settergetter方法和tostring方法。当然TS也包括这些。
constructor类的构造函数,构造函数会在对象创建的时候调用,实例方法中,this表示当前实例对象,可以通过this向新建对象中添加属性。

  constructor(name:string){
    //实例方法中,this表示当前实例对象
    //可以通过this向新建对象中添加属性
    this.name=name;
  }

详细代码:

class Cat{
  //定义类属性
  name:string;
  age:number;
  
  //constructor类的构造函数
  constructor(name:string,age:number){
    this.name=name;
    this.age=age;
  }
  
  //setter,getter方法
  setName(name:string){
    this.name=name;
  }
  getName(){
    return this.name;
  }
  setAge(age:number){
    this.age=age;
  }
  getAge(){
    return this.age;
  }
  
  //tostring方法
  toString(){
    console.log(`name:${this.name},age:${this.age}`);
  }
}

let ketty=new Cat("Ketty",12);
console.log(ketty);
ketty.setAge(20);
ketty.setName("Tom");
console.log(ketty.getAge(),ketty.getName());
console.log(ketty);
ketty.toString();

四、定义类类型

(()=>{
  //定义有个接口
  interface IFly(){
    fly()//该方法没有任何的实现
  }
  interface ISwin(){
    swin()//该方法没有任何的实现
  }

  //定义一个类,这个类的类型就是上面的接口
  class Person implements IFly,ISwin{
    fly(){
      /**xxxxxxxxxxx*/
    }
    swin(){
      
    }
  }

  const person = new Person()
})()

五、存取器

让我们有效控制对 对象中的成员的访问,通过getters和setters来进行操作

class Person{
  firstName:string
  lastName:string
  constructor(firstName:string,lastName:string){
    this.firstName = firstName
    this.lastName = lastName
  }
  get fullName(){
    return this.firstName+'_'+this.lastName
  }
  set fullName(val){
    let name = val.splice('_')
    this.firstName = name[0]
    this.lastName = name[1]
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傅里叶级数ff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值