typescript学习笔记(二)

typescript类

  1. readonly 修饰属性/方法 只读,不能修改
    statci 修改属性/方法,静态属性/方法,即类属性/方法
    每个方法都包含一个隐藏的对象 this ,指当前对象实例
    public 公有属性,外部可以访问
    private 私有属性,外部不能访问
    protected 保护属性,子类可以访问,外部不能访问
    属性没有访问修饰符时,默认修饰符是 public
  2. 构造函数 constructor()
  3. 子类构造函数中调用父类构造函数 super(...arg)
  4. 抽象类,不能实例化对象,只能用来继承,且子类必须实现父类中的抽象方法,例如:
abstract class Animal{
	name : string
	abstract sayHello(){}
}
class Dog extends Animal{
	sayHello(){
		console.log('汪汪汪!')
	}
}
  1. 类的简化定义方式
class A{
	constructor(public name:string, public age:number){
		this.name = name;
		this.age = age;
	}
}

接口、类型声明、类、抽象类

type:描述一个对象的类型
接口:用来定义一个类结构,定义类中包含哪些属性和方法,同时接口也可以当作类型声明来使用

type myType = {
	name:string,
	age:number,
};
interface myInterface{
	name: string;
	age: number;
};
  1. 同一名称的类型声明type只能定义一次,但同一名称的接口能定义多次,二次定义同一名称的接口时可以新增属性/方法,实际上最终该接口就是两次定义的合集
  2. 接口可以在定义类的时候限制类的结构;接口中定义类属性时不能有实际的值;接口中定义类时只考虑结构,不考虑实际值(有点类似抽象类,定义了一个规范);接口所有类方法都是抽象方法;
  3. 类实现一个接口时,就是使类满足接口的要求
interface MyInter{
	name:string;
	sayHello():void;
};
class MyClass implements MyInter{
	name:string;
	constructor(name:string){
		this.name = name;
	}
	sayHello(){
		console.log('大家好~');
	}
};

ts中属性封装

  1. 给属性添加 private 修饰符
    外部本来应该是不能访问的,但是ts编译器还是能编译通过,这时需要修改 tsconfig.json ,添加设置如下:"noEmitOnError" : true,
  2. 添加 get 和 set 方法,能控制属性的读写
class Person{
	private _name:string;
	private _age:number;

	constructor(name:string, age:number){
		this._name = name;
		this._age = age;
	}

	get name(){
		return this._name;
	}
	set name(value :string){
		if(value > 0){ // 控制数据
			this._age = value;
		}		
	}
};
const per = new Person("孙悟空",18)
per.name = "猪八戒"  // 调用的是 set name(value) 函数
console.log(per.name) // 调用的是get name() 这个函数

泛型

当定义函数或类时,遇到类型不明就可以使用泛型

function fn<T>(a: T):T{
	return a;
}
fn(10) // 不指定泛型,ts会自动对类型进行推断
fn<string>('hello') // 指定泛型
function fn2<T, K>(a: T, b: K):T{ // 多个泛型
	console.log(b)
	return a;
}
fn2<string, number>('白龙马', 12) // 限定泛型类型
// 使用接口限定泛型类型
interface Inter{
	length:number
}
function fn3<T extends Inter>(a: T){
	return a.length
}
fn3('abc')
fn3({length:10})
fn3(123) // 编译报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值