我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

    • git

    • CI

    • 小程序

    • docker

    • Typescript

      • 说说Typescript中命名空间和模块的区别
      • 说说Typescript中的数据类型有哪些
      • 说说什么时候使用枚举类型
      • 说说如何在React项目中使用Typescirpt
      • 说说如何在Vue项目中使用Typescirpt
      • 说说对Typescript中函数的理解
      • 说说对Typescript中接口interface的理解
      • 说说对Typescript中泛型的理解
        • 是什么
        • 怎么用
          • 函数
          • 接口
          • 类
        • 约束类型
        • 索引类型
      • 说说对Typescript中类的理解
      • 说说对Typescript中高级类型的理解
      • 说说对Typescript的理解
    • webpack

    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • Typescript
fangdown
2021-09-13
目录

说说对Typescript中泛型的理解

# 是什么

泛型: 泛指的数据类型

function fn(param: number): number {
  return param;
}
function fn(param: string): string {
  return param;
}
function fn<T>(param: T):T {
  return param
}

# 怎么用

使用场景:

  • 函数

  • 接口

  • 类

# 函数

function fn<T>(param: T):T {
  return param
}
// 多参数
function fn<T, U>(param: [T, U]):[U, T] {
  return [param[1], param[0]]
}

# 接口

interface IFn<T> {
  (param:T): T
}

const fn:IFn = data => data 

# 类

class Fn<T> {
  private arr:T[] = []
  public push(item:T){
    this.arr.push(item)
  }
  public pop(){
    this.arr.pop()
  }
}
const f = new Fn<string>()
f.push('hello')

# 约束类型

// 约束了只能是字符串或者是数字
type P = string | number

class Fn<T extends P> {
  private arr:T[] = []
  public push(item:T){
    this.arr.push(item)
  }
  public pop(){
    this.arr.pop()
  }
}
const f = new Fn<string>()
f.push('hello')

# 索引类型

function fn<T extends object, U extends keyof T>(obj: T, key: U) {
  return obj[key] // ok
}
const obj = {
  name:'fang'
}
fn(obj, 'name') // fang
fn(obj, 'name1') // 报错
#ts
上次更新: 2021/12/19, 18:05:42
说说对Typescript中接口interface的理解
说说对Typescript中类的理解

← 说说对Typescript中接口interface的理解 说说对Typescript中类的理解→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式