Typescript学习之路(三)

静态属性,静态方法 static

class Persond {
  public name: string;
  public age: number = 20;
  static sex = '男';
  constructor(name: string) {
    this.name = name;
  }
  //静态方法,无法调用类里面的属性
  static print() {
    console.log('print方法' + Persond.sex);
  }
}
Persond.print();

多态

class Pers extends Persond {
  run() {
    console.log(`${this.name}在运动`);
  }
  work() {
    console.log(`${this.name}在工作`);
  }
}
const dg = new Pers('wo');
dg.run();//wo在运动
const db = new Pers('bb');
db.work();//bb在工作
  • abstract 抽象类
  • 提供其他类继承的基类,不能直接被实例化;
  • 抽象类中的抽象方法不包含具体实现并且必须在派生类中实现;
  • 抽象方法只能放在抽象类里面
abstract class Animal{
  public name: string;
  constructor(name: string){
    this.name = name;
  }
  abstract eat(): any;
}

class Dog extends Animal {
  constructor(name: string){
    super(name)
  }
  // 抽象类的子类必须实现抽象类里面的抽象方法
  eat(){
    return this.name + '吃粮食';
  }
}
class Cat extends Animal {
  constructor(name: string){
    super(name)
  }
  // 抽象类的子类必须实现抽象类里面的抽象方法
  eat(){
    return this.name + '吃老鼠';
  }
}
let dog = new Dog('Dog')
console.log(dog.eat())//Dog吃粮食

命名空间

内部模块,主要用于组织代码,避免命名冲突

namespace A {
  interface Animal {  }
  export class Cat {
    eat(){}
  }
}
let ax = new A.Cat();
console.log(ax);

装饰器

类装饰器,属性装饰器,方法装饰器

  • 普通装饰器(无法传参), 装饰器工厂(可传参)
  • 执行顺序: 属性 > 方法 > 方法参数 > 类
  • 多个同样的修饰器,先执行后面的
  • 调用api

例子:泛型接口 数据库操作

class ArticleCate {
  title: string | undefined;//联合类型
  desc: string | undefined;
  status: number | undefined;
  constructor(params: {
      title: string | undefined,
      desc: string | undefined,
      status?: number |undefined,
  }) {
      this.title = params.title
      this.desc = params.desc
      this.status = params.status
  }
}

class MysqlDb<T>{
  add(info: T): boolean{
    console.log(info)
    return true;
  }
  update(id: number,info: T):boolean {
    console.log(info)
    return true;
  }
}
//添加操作
let ab = new ArticleCate({
  title: '分类', desc: '123', status: 0
})
let dbt = new MysqlDb<ArticleCate>();

dbt.add(ab);//title: "分类", desc: "123", status: 0

//修改操作
let bc = new ArticleCate({
  title: '凤梨',
  desc: '456',
  status: 1
})

dbt.update(123,bc);//title: "凤梨", desc: "456", status: 1

转载:
Typescript中文手册: https://typescript.bootcss.com/
TypeScript 基础入门及综合案例使用:https://www.jianshu.com/p/d86a8698cb75

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值