博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Typescript中的泛型的使用
阅读量:4249 次
发布时间:2019-05-26

本文共 1942 字,大约阅读时间需要 6 分钟。

泛型的初步举例

function Hello1(num:number):number {
return num; }// 避免如下使用方式function Hello2(str:any):any{
return ;}// 使用泛型避免any,使用泛型实现, Hello2是泛型,参数是泛型,返回值是泛型function Hello2
(arg:T):T {
return arg;}// 创建一个string类型的Hello2var output = Hello2
('Joh'); console.log(output); // Joh// 错误的实现, 如果Hello指定了是string类型的,那么参数不能换成number类型的// var output2 = Hello2
(10);

对泛型的更多应用

// 泛型可以用多种形式来表示,泛型根据你所传递的类型来决定具有那些属性的function Hello
(num:K):K {
// console.log(num.length); // 此时的错误的,因为我们传递类型不确定有length return num;}function Hello2
(num:K[]):K[] {
console.log(num.length); // 此时是可以的 return num;}var list:Array
= Hello2
(['1', '2', '3']);for(var i = 0; i < list.length; i++) {
alert(list[i]);}

泛型的类型使用

案例一:

function Hello
(arg:T):T {
return arg;}var myHello:
(arg:K) => K = Hello;console.log(myHello('hello Joh'));

关于 Lambda 表达式

var myFunc:(a:number) => string = function(a:number):string{
return "Hello" + a;}console.log(myFunc(2));// ts 本身就具有类型检查,上面我们的完全可以这样写:var myFunc1 = function(a:number):string {
return "Hello1" + a;}console.log(myFunc1(2));

案例二:

function Hello
(arg:T):T {
return arg;}var myHello:{
(arg:T):T} = Hello;console.log(myHello('Hello'));

案例三:

interface Hello{
(arg:T):T;}function myHello
(arg:T):T {
return arg;}var MH:Hello = myHello;console.log(MH('hello'));console.log(MH
('hello'));

案例四:

interface Hello
{
(arg:T):T;}function myHello
(arg:T):T {
return arg;}var mh:Hello
= myHello;console.log(mh(100));

泛型类

class HelloNumber
{
zero: T; add:(x:T, y:T) => T;}var myHelloNumber = new HelloNumber
();myHelloNumber.Ten = 10;myHelloNumber.add = function(x,y) {
return x+y;}alert(myHelloNumber.Ten); // 10alert(myHelloNumber.add(10, 10)); // 20

转载地址:http://kkwei.baihongyu.com/

你可能感兴趣的文章
【Ubuntu】ubuntu设置GUI程序自启动
查看>>
【Ubuntu】ping: unknown host www.baidu.com
查看>>
【Qt】qss样式表之:QCalendarWidget,日历窗口样式表设置
查看>>
【Qt】qss样式表之:自定义属性实现动态切换样式
查看>>
【GStreamer】基本概念及安装
查看>>
【GStreamer】gstreamer工具详解之:gst-launch-1.0
查看>>
【GStreamer】gstreamer工具详解之:gst-inspect-1.0
查看>>
【GStreamer】gstreamer工具详解之:ges-launch-1.0
查看>>
【GStreamer】gstreamer工具详解之:gst-discoverer-1.0
查看>>
【Ubuntu】安装中文输入法
查看>>
【Cmake】执行cmake命令时报错:No XSLT processor found
查看>>
【数据库】sqlite中PRAGMA命令说明
查看>>
【Qt】Qt容器总结
查看>>
【C++】C++11 STL算法(一):非修改序列操作(Non-modifying sequence operations)
查看>>
【C++】C++11 STL算法(二):修改序列的操作(Modifying sequence operations)
查看>>
【C++】C++11 STL算法(三):分隔操作(Partitioning operations)、排序操作(Sorting operations)
查看>>
【C++】C++11 STL算法(四):二分查找法(Binary search operations)、合并操作
查看>>
【C++】C++11 STL算法(五):设置操作(Set operations)、堆操作(Heap operations)
查看>>
【C++】C++11 STL算法(六):最小/最大操作(Minimum/maximum operations)、比较运算(Comparison operations)
查看>>
【C++】C++11 STL算法(七):排列操作(Permutation operations)、数值操作(Numeric operations)
查看>>