TS学习笔记(范型)

1.首先举个直白的小demo解释下为什么需要范型

1.我们这里写了一个函数,传入的参数我们规定是number类型。代码如下

接着如果我们又要写一个函数实现的业务跟上面这个一样,但传入的参数类型却规定要string
那我们就得重新写一个一模一样的函数,函数内的代码如果很多很多,那显然这是不可取的。

那如果我们把他的类型规定成any不就可以了吗,但是这样做的话就失去了类型检测的意义。
我们既需要一定的类型检测又不想出现代码冗余,范型就很好的解决了这一问题。
范型的作用:让我们在调用一个函数时可以自定义参数类型。就是把约束的能力交给调用者。

2.范型的用法


函数内的T代表的就是待会儿使用者要规定的类型。
若如54行你规定了number类型,传入的数据却是string类型则会报错。
以上就是范型的定义和范型的函数。

3.范型类

举个栗子:需要一个类new一个实例实现一个方法像一个数组里增加数据,然后实现一个方法打印数组里的最小值。
一般我们会这样写:

那如果我们像数组里传入的数据不一定是number类型,还需要string那可咋整呢,如abcd,依据ascall码值得出最小值。
那我们就得重写一个类和方法声明传入的参数为string这明显是不必要的操作。
那下面我们就用范型类解决这一问题。

这样我们就可以在new一个实例时自定义规范的类型。简化了冗余的代码。

4.范型接口 范型类接口

之前我们写过的函数类型接口如下:

接下来我们把它改造成一个范型接口
写法一:

写法二:

5. 把类作为参数类型的范型类

下面我们看看把类作为参数的范型类,我们来做以下操作。


首先定义一个User类作为映射数据库字段
然后定义一个MysqlDb的类用于操作数据库
然后把User类作为参数传入到MysqlDb中。

接着我们又需要一个ArticleCate类实现跟刚刚差不多的操作。
那我们又得重写下这个MysqlDb

接下来我们就用范型类来简化这些操作。
且新建了update模拟数据库操作,
因为update需传入参数,那我们就可以直接在ArticleCate类里书写构造器并规定传入的参数。
最后每次new实例时规定参数并执行函数就可以啦。

你可能感兴趣的:(typescript)