TypeScript泛型接口(三)

副业刚需
• 阅读 1557

以使用接口的方式来定义一个函数需要符合的形状:

interface SearchFunc {
  (source: string, subString: string): boolean;
}


let mySearch: SearchFunc = (source: string, subString: string) => {
    return source.search(subString) !== -1;
}

当然也可以使用含有泛型的接口来定义函数的形状:

interface CreateArrayFunc {
    <T>(length: number, value: T): Array<T>;
}


let createArray: CreateArrayFunc = <T extends {}>(length: number, value: T): Array<T> => {
    let result: T[] = [];
    for (let i = 0; i < length; i++) {
        result[i] = value;
    }
    return result;
}


createArray(3, 'x'); // ['x', 'x', 'x']

进一步,我们可以把泛型参数提前到接口名上:

interface CreateArrayFunc<T> {
    (length: number, value: T): Array<T>;
}


let createArray: CreateArrayFunc<any>;
createArray = function<T>(length: number, value: T): Array<T> {
    let result: T[] = [];
    for (let i = 0; i < length; i++) {
        result[i] = value;
    }
    return result;
}


createArray(3, 'x'); // ['x', 'x', 'x']

注意,此时在使用泛型接口的时候,需要定义泛型的类型。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java常用接口范例(二)
java接口下发接口服务接口对账中心调用计算中心的服务,来获取数据服务接口对账中心调用主数据中心数据库,直接查询数据java工具库使用   1.连接数据源:@DataSource(valueDynamicDataSource.OFFLINE\_CMBC\_SQLSERVER\_DATA\_SOURCE)   2.服
Easter79 Easter79
3年前
TypeScript 实战技巧
转自TypeScript实践与技巧 https://juejin.im/post/6873080212675166215一、常用技巧1\.函数重载    export function util(str: string): string    export function util(str: n
Wesley13 Wesley13
3年前
Java8函数式编程(A)
将行为作为数据传递函数编程的最直接的表现,莫过于将函数作为数据自由传递,结合泛型推导能力,使代码表达能力获得飞一般的提升。Java8怎么支持函数式编程?主要有三个核心概念:函数接口(Function)流(Stream)聚合器(Collector)函数接口关于函数接口,两件事:函数接口是行为
Wesley13 Wesley13
3年前
JAVA常用类_String
String:一、定义1.字符串,声明为final的,不可被继。2.实现了Serializable接口:表示字符串是支持序列化的。  实现了Comparable接口:表示String可以比较大小二、特性1.String的不可变性    1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值
Easter79 Easter79
3年前
TypeScript Generics(泛型)
软件工程的一个主要部分就是构建组件,构建的组件不仅需要具有明确的定义和统一的接口,同时也需要组件可复用。支持现有的数据类型和将来添加的数据类型的组件为大型软件系统的开发过程提供很好的灵活性。在C和Java中,可以使用"泛型"来创建可复用的组件,并且组件可支持多种数据类型。这样便可以让用户根据自己的数据类型来使用组件。泛型的简单案例首先,
Easter79 Easter79
3年前
Thinking in java Chapter15 泛型
1与C比较2简单泛型泛型类3泛型接口4泛型方法5匿名内部类6构建复杂模型78910“泛型”意思就是:适用于许多许多的类型<h2id"1"1与C比较</h2C
Stella981 Stella981
3年前
Ionic2 集成ECharts
在群里看到有人问怎么在Ionic2中集成ECharts来显示图表。当时答应说写个blog,简单写下步骤。在TypeScript中如果要使用第三方库,必须要有d.ts,也就是定义文件,没有这个文件的话TypeScript是认不出来的,无法编译通过。下面以百度的ECharts图表为例,演示一下使用第三方库的用法。1、安装ECHARTS首先需要使用np
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Stella981 Stella981
3年前
Delphi 目录操作
删除目录:function DelDirectory(const Source:string): boolean; var   fo: TSHFILEOPSTRUCT; begin   FillChar(fo, SizeOf(fo), 0);   with fo do   begi
Easter79 Easter79
3年前
TypeScript基础入门
转载TypeScript基础入门泛型泛型类(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.gowhich.com%2Fblog%2F903)
Stella981 Stella981
3年前
Discuz!开发之模板标签语法学习
一、加载模板使用template()函数显示已存在模板:在Discuz!程序执行中可以通过includetemplate('模板文件夹/模板名称无后缀');的方式进行解析!template()函数定义于./source/function/function\_core.phpDiscuz!模板的解析逻辑定义于./source/class/c