TypeScript 高级用法

一、运算符

1、可选链式运算符 ?.(其效果相当与if判断)

例如下:

 const list = {
    name: 'mingMing',
    age: '26'
    hobby: ['tableTennis', 'game', 'eat', 'flower']
  }
//1、确定list里面存在hobby(无报错)

//2、list.hobby为undefined/null时,或者后端给我们返回这个值时有时无时,上面遍历的写法会导致控制台(有报错)
  list.hobby.forEach((item) => {
    console.log('item', item)
  })

//3.如果采用可选链式运算符的写法或者是先判断有没有值再进行操作都可以(无报错)如下展示:
  list?.hobby?.forEach((item) => {
    console.log('item', item)
  })

 上述写法list.hobby为undefined/null时,或者后端给我们返回这个值时有时无时,上面遍历的写法会导致控制台有报错时报错信息:

2、非空断言运算符 !(这个运算符可以用在变量名或者函数名之后,用来强调对应的元素是非 null|undefined 的)

function onClick(callback?: () => void) {
  callback!();		// 参数是可选入参,加了这个感叹号!之后,TS编译不报错
}

3、空值合并运算符 ?? (当左侧的操作数为 null 或者 undefined 时,返回其右侧数,否则返回左侧数)

const a = null;
const b = 'Hello, World!';
 
const result = a ?? b;
console.log(result); // 输出: 'Hello, World!'
 
const a = 0;
const b = 'Hello, World!';
 
const result1 = a ?? b; // 0

4、数字分隔符_(方便阅读)

let num:number=1_2_3_456.7_89_0_1 
console.log(num) //123456.78901

二、泛型

  // 普通类型定义
  type Dog<T> = { name: string; age: T }
  // 普通类型使用
  const dog: Dog<number> = { name: 'ww', age: 20 }
  // 类定义
  class Cat<T> {
    private age: T //私有
    constructor(age: T) {
      this.age = age
    }
  }
  // 类使用
  const cat: Cat<number> = new Cat<number>(20) // 或简写 const cat = new Cat(20)
  // 函数定义
  function swipe<T, U>(value: [T, U]): [U, T] {
    return [value[1], value[0]]
  }
  // 函数使用
  swipe<Cat<number>, Dog<number>>([cat, dog]) // 或简写 swipe([cat, dog])

1、交叉类型 T & U

interface Ant:{
    name:string
    age:number
  }
  interface Dog:{
    weight:string
    hobby:array<string>
  }
  const flyAnt:Ant & Fly={
    name:'小黄',
    age:18,
    weight:'10kg',
    hobby:['打篮球','踢足球']
  }

2、联合类型 T | U

  let stringNumber:string|number = 123
  stringOrNumber =''

3、关键字 (约束类型)

  // 语法:T extends K(T是否能赋值给K)

  type Exclude<T, U> = T extends U ? never : T

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值