`

TypeScript语法基础 - 泛型

阅读更多

   1. 泛型函数

function getData(value:T):T{
	return value;
}

//调用时输入类型
console.log(getData(123)); //123
console.log(getData('gogogo')); //gogogo

 

   2. 泛型类

class MinClass{
	public list:T[]=[];

	add(value:T):void{
		this.list.push(value);

	}

	min():T{
		var minNum=this.list[0];
		for(var i=0;i<list.length; i++){
			if(minNum > this.list[i]){
				minNum=this.list[i];
			}
		}

		return minNum;
	}
}

var m1=new MinClass(); /*实例化类,并且制定了类的类型是number*/
m1.add(2);
m1.add(7);
m1.add(444);
console.log(m1.min()); //输出最小是2
var m2=new MinClass(); /*实例化类,并且制定了类的类型是string*/
m2.add('a');
m2.add('g');
m2.add('v');
console.log(m2.min()); //输出最小是'a'

 

   3. 泛型函数接口

a. 第一种写法

interface ConfigFn {
	(value:T):T;
}

var getData:ConfigFn=function(value:T):T{
	return value;
}
console.log(getData('张三'));// 张三
console.log(getData(1111)); //1111

 

b. 第二种写法

interface ConfigFn{
	(value:T):T;
}

function getData(value:T):T{
	return value;
}

//选择string类型
var myGetData:ConfigFn=getData;
//调用
console.log(myGetData('20'));//'20'

 

    4. 泛型类实例Db类

/*
* 定义一个user的类的这个类的作用就是映射数据库字段
* 然后定义一个MysqlDb的类这个类用于操作数据库
* 然后把User类作为参数传入到MysqlDb中
* */
//把类作为参数来约束数据传入类型
class User{
	username:string |undefined;
	password: string| undefined;
}

class MysqlDb{
	add(user:User):boolean{
		console.log(user);
		return true;
	}
}

var u=new User();
u.username='张三';
u.password='12233';
var Db=new MysqlDb();
Db.add(u);

 

   5. 操作数据库的泛型类

class MysqlDb{
	//增添操作
	add(info:T):boolean{
		console.log(info);
		return true;
	}

	//更新操作
	updated(info:T,id:number):boolean{
		console.log(info);
		console.log(id);
		return true;
	}

}

//1.定义一个User类 和数据库进行映射
class User{
	username:string | undefined;
	password: string | undefined;
}

var u=new User();
u.username='钩子';
u.password='1111';
var Db1=new MysqlDb();
console.log(Db1.add(u));

 

分享到:
评论

相关推荐

    Mastering-TypeScript-Second-Edition:这是Packt出版的《精通TypeScript-第二版》一书的代码存储库

    它允许我们今天使用ES5,ES6和ES7 JavaScript语言功能,包括类,接口,泛型,模块等。 其简单的键入语法使您可以使用面向对象的技术和行业标准设计原理来构建大型,强大的应用程序。 ##说明和导航所有代码都组织在...

    TypeScript快速入门(通俗易懂)【2020新版】

    7.TypeScript语法之泛型 8.TypeScript语法之模块 9.TypeScript语法之命名空间 10.TypeScript语法之装饰器 教学全程采用笔记+代码案例的形式讲解,每个知识点都有详细的讲解,通俗易懂!!! 讲师介绍

    你必须知道的 TypeScript 语法

    通过每节一个语法的方式,详细解析TS中重要语法的使用和应用场景,如类,泛型和枚举等热门语法,课程内容短小,侧重实战和学员动手能力,通过本课程的学习,学员可以理解并掌握TS中核心语法的使用方法,并能综合应用...

    TypeScript 教程

    因此他重写了这一章,于是装饰器现在就有新语法和旧语法两章,因为 TypeScript 同时支持这两者。 内容 简介 基本用法 any 类型 类型系统 数组 元组 symbol 类型 函数 对象 interface 类 泛型 Enum 类型 类型断言 ...

    TypeScriptLearn:学习微软出品的typeScript的语法

    TypeScript学习 参考的gitbook 其实TS用的很多东西跟ES6是高度重合的,包括箭头函数/解构赋值/模块/类的部分特性 不重合的是类型声明 接口的灵活实现 还有一些补充的 关键字/抽象类/函数重载/泛型 写了一些语法demo,...

    matlab中绿色的代码什么意思-JavaScriptOOP:如何以及何时在JavaScript中使用OOP?

    另一个指标是TypeScript的出现,TypeScript是Microsoft编写的JS的超集,并支持OOP功能:类,名称空间,模块,静态类型,泛型。 在这个简短的概述中,我将回答问题:如何,为什么以及何时在JavaScript中使用OOP? ...

    gosu-lang:Gosu编程语言

    Gosu功能: 开放式系统高级类型推断程序文件(脚本包含相同级别的语句,函数和类) 结构化类型(类似于TypeScript的接口) 扩展方法(又名增强功能) Java互操作性Lambda表达式类/接口/枚举泛型(已修正,协变类型...

    java简易投票系统源码下载-awesome-rust-cn:Rust生态圈--Rust资源大全:精选的Rust代码和资源列表

    通过Trait来实现泛型、多态。 目录 应用程序 — 跨平台,GPU增强的终端仿真器 — 用于遍历Amazon S3层次结构(类似于Amazon S3的find)的命令行实用工具 — 解决学术基准问题的遗传算法 — 一种用rust实现交互式程序...

    pyright:Python的静态类型检查器

    类型检查功能类型提示,包括泛型变量注释的语法结构子类型化分发和包装类型信息推迟对注释的评估标准集合中的类型提示泛型文字类型字典最终预选赛灵活变量注释补充语法参数规格变量显式类型别名用户定义类型防护函数...

Global site tag (gtag.js) - Google Analytics