TypeScript-类继承-接口-泛型

TypeScript-类继承-接口

  • 实现类继承的简单例子
  • 定义接口
  • 接口的继承
  • 接口的多继承
  • 实现多个接口
  • 泛型
  • 使用泛型函数
  • 多重泛型

实现类继承的简单例子

class Human{
    static totalPeople = 0;
    constructor(protected name: string, private age: number){
        Human.totalPeople += 1;
    }
    talk(){
        return `Hi,I'm ${this.name}!`;
    }
}
class Developer extends Human{
    constructor(name:string,private languages:string[],age:number){
        super(name,age);
    }
}
  • 与ES2015类似,TypeScript也支持extends关键字,经过脱糖处理之后可以把代码转换成基于原型继承的JavaScript代码。

定义接口

interface Accountable {
    accountNumner:number;
    getIncom(): number;
}
class Individual implements Accountable{
    getIncom(): number {
        return 0;
    }

    accountNumner: number;
}
class Firm implements Accountable{
    getIncom(): number {
        return 0;
    }
    accountNumner: number;
}
  • 在面向对象的编程语言中,包括TypeScript在内,提出了一种解决方案。如果对象实现了某些接口,而这些接口里面声明了它们具有某些属性和行为,那么就可以确保对象拥有这些属性。
  • 在TypeScript中实现一个接口,那么必须实现这个接口里面所定义的所有方法,否则在编译阶段就会抛出错误。

接口的继承

interface Accountable {
    accountNumner:number;
    getIncom(): number;
}
interface ssn extends Accountable{
    ssn:string
}

接口的多继承

interface Human1{
    age:number;
    name:number;
}
interface Accountable {
    accountNumner:number;
    getIncom(): number;
}
interface ssn extends Accountable,Human1{
    ssn:string
}

实现多个接口

class Person implements Human1,Accountable{
    accountNumner: number;
    age: number;
    name: number;

    getIncom(): number {
        return 0;
    }
    
}

泛型

  • 经典的数据结构的例子:binarySearchTree
  • 我们这样定义Node节点
class Node{
value: any;
left: Node;
right: Node;
}
  • 在以上代码中,我们定义了一个名为Node的类。这个类的实例代表树中的节点。每一个节点都有一个左孩子和一个有孩子节点,并且有一个类型为any的值,使用any类型是为了在BinarySearchTree中的节点上储存任何类型的数据。
  • 虽然以上看起来很合理,但是没有使用TypeScript所提供的最重要的特性–静态类型。
  • 解决方案如下
	class Node<T>{
	value: <T>;
	left: Node<T>;
	right: Node<T>;
	}

使用泛型函数

function identity<T>(arg: T){
return arg;
}
interface Comparable {
	compare(a:Comparable): number;
}
function sort<T extends Comparable>(arr: Comparable[]): Comparable[]{
}

多重泛型

class Pair<K,V>{
key:k;
value:V;
}
  • 创建
  • let pair = new Pair(String,number);

你可能感兴趣的:(TypeScript)