剧场模式
首页前端TypeScript诱人的 TypeScript 视频教程

诱人的 TypeScript 视频教程 #54 泛型 - generics - 使用

求知小风 · 真仙发布于
1

// function getArray(items: any[]): any[] {
//  return new Array().concat(items);
// }

// let myNumArray = getArray([100, 200, 300]);
// let myStrArray = getArray(["hello", "world"]);

// console.log(myNumArray);
// console.log(myStrArray);

// myNumArray.push(400);
// myStrArray.push("rails365");

// console.log(myNumArray);
// console.log(myStrArray);

// myNumArray.push("hfpp2012");
// myStrArray.push(500);

// console.log(myNumArray);
// console.log(myStrArray);

// [ 100, 200, 300, 400, 'hfpp2012' ]
// [ 'hello', 'world', 'rails365', 500 ]

// 可以用很多类型来代替 T
// T[] 代表数组,每个元素都是 T 类型
function getArray<T>(items: T[]): T[] {
    return new Array<T>().concat(items);
}

// function getArray(items: number[]): number[] {
//  return new Array().concat(items);
// }

// 调用,可以传入很多类型,代码复用
let myNumArray = getArray<number>([100, 200, 300]);
let myStrArray = getArray<string>(['hello', 'world']);

// 当不传入 T 时,会推荐出类型
// 不推荐这种写法,规范的作法是要指定类型
let myBooleanArray = getArray([true, false]);

myNumArray.push(400);
myStrArray.push('rails365');
// myBooleanArray.push('hfpp2012');

// function getArray1<T>(items: T): T {
//  console.log(items.length);
//  return T;
// }

function getArray1<T>(items: T[]): T[] {
    console.log(items.length);
    return items;
}

// myNumArray.push('hfpp2012');
// myStrArray.push(500);

// 限制为所有的元素是纯数字或字符串

// 
// function getArray(items: number[]): number[] {
//  return new Array().concat(items);
// }

// function getArray(items: string[]): string[] {
//  return new Array().concat(items);
// }

// function getArray(items: boolean[]): boolean[] {
//  return new Array().concat(items);
// }
1 条回复
  • kuckboy1994 · 太乙
    kuckboy1994 · 太乙 #1

    getArray 中如果传入的是多种类型的,T就会变成多种类型的联合类型

加微信(qiuzhi99666)入群官方服务号
随机课程
React Native 入门实战视频教程

React Native 入门实战视频教程

0 个视频0 分钟中级

全部免费

React Native还未更新新课程

课程目录

1Free诱人的 TypeScript 视频教程 #1 介绍

2Free诱人的 TypeScript 视频教程 #2 为什么要用 TypeScript

3Free诱人的 TypeScript 视频教程 #3 安装 TypeScript

4Pro诱人的 TypeScript 视频教程 #4 类型定义

5Pro诱人的 TypeScript 视频教程 #5 var、let、const

6Pro诱人的 TypeScript 视频教程 #6 数组 - Array

7Pro诱人的 TypeScript 视频教程 #7 元组 - Tuple

8Pro诱人的 TypeScript 视频教程 #8 函数 - Function - Arrow Function

9Pro诱人的 TypeScript 视频教程 #9 函数返回值类型 - void

10Pro诱人的 TypeScript 视频教程 #10 函数 - 默认参数和可选参数

11Pro诱人的 TypeScript 视频教程 #11 函数 - Rest Parameters

12Pro诱人的 TypeScript 视频教程 #12 任意类型 - any

13Pro诱人的 TypeScript 视频教程 #13 联合类型 - union type、null、undefined

14Pro诱人的 TypeScript 视频教程 #14 类 - 面向对象 - class 介绍

15Pro诱人的 TypeScript 视频教程 #15 面向对象 - 类 - 构造方法(constructor)- 方法(methods)

16Pro诱人的 TypeScript 视频教程 #16 面向对象 - 继承和多态 - Inheritance and Polymorphism

17Pro诱人的 TypeScript 视频教程 #17 面向对象 - 成员可见性 - Member visibility - public 和 private

18Pro诱人的 TypeScript 视频教程 #18 面向对象 - 成员可见性 - Member visibility - 深入解析 private 和 protected 的异同

19Pro诱人的 TypeScript 视频教程 #19 面向对象 - 成员可见性 - Member visibility - 深入探索 constructor

20Pro诱人的 TypeScript 视频教程 #20 面向对象 - 静态属性和方法 - static - 深入探索成员可见性

21Pro诱人的 TypeScript 视频教程 #21 面向对象 - 只读属性 - readonly

22Pro诱人的 TypeScript 视频教程 #22 枚举类型 - enum

23Pro诱人的 TypeScript 视频教程 #23 nodemon 和 ts-node

24Pro诱人的 TypeScript 视频教程 #24 接口介绍 - Interfaces - 鸭子类型

25Pro诱人的 TypeScript 视频教程 #25 接口使用 - Interfaces

26Pro诱人的 TypeScript 视频教程 #26 接口 - 方法

27Pro诱人的 TypeScript 视频教程 #27 类型别名 - type alias

28Pro诱人的 TypeScript 视频教程 #28 实例演练类实现接口 - Class Types Implementing an interface

29Pro诱人的 TypeScript 视频教程 #29 接口 - 可选属性 - Excess Property Checks

30Pro诱人的 TypeScript 视频教程 #30 接口 - 只读属性

31Pro诱人的 TypeScript 视频教程 #31 接口 - Function Types

32Pro诱人的 TypeScript 视频教程 #32 结合接口详细谈谈类型断言 part 1

33Pro诱人的 TypeScript 视频教程 #33 结合接口详细谈谈类型断言 part 2

34Pro诱人的 TypeScript 视频教程 #34 接口 - 继承与实现多个接口

35Pro诱人的 TypeScript 视频教程 #35 接口 - 接口继承类 - Interface Extending Classes

36Free诱人的 TypeScript 视频教程 #36 接口 - Indexable Types part 1

37Free诱人的 TypeScript 视频教程 #37 接口 - Indexable Types part 2

38Pro诱人的 TypeScript 视频教程 #38 如何处理列表数据

39Pro诱人的 TypeScript 视频教程 #39 类 - 抽象类(补充)

40Pro诱人的 TypeScript 视频教程 #40 Class - Parameter Properties(补充)

41Pro诱人的 TypeScript 视频教程 #41 Class - Accessors getters/setters(补充)

42Pro诱人的 TypeScript 视频教程 #42 --noImplicitThis flag and arrow function

43Pro诱人的 TypeScript 视频教程 #43 五种定义函数类型的方法

44Pro诱人的 TypeScript 视频教程 #44 函数重载 - Function Overloading - part 1

45Pro诱人的 TypeScript 视频教程 #45 函数重载 - Function Overloading - part 2

46Pro诱人的 TypeScript 视频教程 #46 Type Guards part 1(typeof)

47Pro诱人的 TypeScript 视频教程 #47 Type Guards part 2(instanceof)

48Pro诱人的 TypeScript 视频教程 #48 Type Guards For null and undefined - --strictNullChecks

49Pro诱人的 TypeScript 视频教程 #49 非空断言操作符 ! - Non-Null Assertion Operator !

50Pro诱人的 TypeScript 视频教程 #50 never 类型 part 1

51Pro诱人的 TypeScript 视频教程 #51 never 类型 part 2

52Pro诱人的 TypeScript 视频教程 #52 Discriminated Unions

53Pro诱人的 TypeScript 视频教程 #53 泛型 - generics - 为何要使用泛型

Free诱人的 TypeScript 视频教程 #54 泛型 - generics - 使用

55Pro诱人的 TypeScript 视频教程 #55 泛型 - 在类中使用(简洁)

56Pro诱人的 TypeScript 视频教程 #56 泛型 - 在函数中使用(简洁)

57Pro诱人的 TypeScript 视频教程 #57 泛型 - 在接口中使用 part 1(简洁)

58Pro诱人的 TypeScript 视频教程 #58 泛型 - Interfaces describing indexables part 2(简洁)

59Pro诱人的 TypeScript 视频教程 #59 泛型 - OOPs style interfaces part 3(简洁)

60Pro诱人的 TypeScript 视频教程 #60 扩展运算符 - Spread Operator(简洁)

61Pro诱人的 TypeScript 视频教程 #61 用 keyof 来定义被允许的属性名称(简洁)

62Pro诱人的 TypeScript 视频教程 #62 泛型 - Generic Constraints - 约束条件 part 1(65 集有补充)

63Pro诱人的 TypeScript 视频教程 #63 泛型 - Generic Constraints - 约束条件 part 2(简洁)

64Pro诱人的 TypeScript 视频教程 #64 泛型 - 类型别名(简洁)

65Pro诱人的 TypeScript 视频教程 #65 泛型 - 约束 - 为什么要使用 extends (补充 62 集)

66Free诱人的 TypeScript 视频教程 #66 模块

67Free诱人的 TypeScript 视频教程 #67 配置文件 tsconfig.json 使用指南

68Pro诱人的 TypeScript 视频教程 #68 如何使用第三方库 part 1

69Free诱人的 TypeScript 视频教程 #69 如何使用第三方库 part 2(完结)

学员(69)
张琳 · 道祖LeeyCul · 元婴Y · 大乘oyhk · 大乘温文尔雅 · 道祖冀宇航 · 道祖凯文 · 元婴老祖 | 想前端加薪,就到达魔学院 · 道祖阳光总在风雨后 · 元婴心灵归属 · 元婴o欧洋 · 道祖smile · 大罗
最新动态
张琳 · 道祖学习到了8:37
LeeyCul · 元婴学习到了4:17
Y · 大乘学习到了8:35
oyhk · 大乘学习到了8:58
温文尔雅 · 道祖学习到了8:58
统计信息
    学员: 16586
    视频数量: 980
    帖子数量: 414

© 汕尾市求知科技有限公司 | 粤ICP备19038915号 | 关注我们 | 在线学员:133

Top