typescript学习(7)---泛型

1、类型参数

实现经典的数据结构BinarySearchTree:

class Node<T> {
  value : T;
  left : Node<T>;
  right : Node<T>;
}

Node<T>表示这个类可以接收单个参数T,这个参数在类中的某个地方会使用到。使用方法:

let numberNode = new Node<number>();
let stringNode = new Node<string>();
numberNode.right = new Node<number>();
numberNode.value = 42;
//Type "string" is not assignable to type "number"
numberNode.value = "42";
//Type Node<string> is not assignable to type Node<number>
numberNode.left = stringNode;

    上述代码中我们创建了3个节点:numberNode、stringNode,以及另一个类型为Node<number>的节点,然后把这个节点实例赋给numberNode的右孩子。由于numberNode的类型是Node<number>,所以我们可以把它的值赋成42,但是不能是"42",左孩子同理。

    在定义中我们明确声明了左右孩子的节点类型都是Node<number>,因此会得到第二个编译错误。


2、泛型函数

    泛型的另一个典型用法就是用来定义一种可以操作一组类型的函数。如定义一个identity函数,它可以接受一个参数T,并且会返回它:

function identity<T>(arg: T) {
  return arg;
}


3、多重泛型

ts允许使用多重泛型:

class Pair<K,V>{
  key:K;
  value:V;
}

用以下方式创建实例:

let pair = new Pair<string,number>();
pair.key = "foo";
pair.value = 42;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值