静态属性,静态方法 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