Skip to content

03-ts对简单的可选参数处理 ​

1. 简单的可选参数处理 ​

typescript
function logger3(arg1: string, arg2: string, arg3?: string) {
  console.log(`this is ${arg1} ${arg2} ${arg3 ?? ''}`)
}

logger3('123', '456')
logger3('123', '456', '789')

2. 当相关对象可能为空时的一些处理 ​

补充: 可选操作符 ?? 和 || 的区别

?? 不会隐式转换前面的值, 只有前一个值为null和undefined, 才会使用后一个值

|| 会对前一个值进行隐式转换, 只要转换后的布尔值为false, 就会使用后一个值

typescript
interface User {
  name: string
  info?: {
    email?: string
  }
}

// 当可以确定该值不为空时的处理
function getEmail(user: User): string {
  if (user.info) {
    return user.info.email!
  }
  return 'no email'
}

// 使用可选操作符进行相关属性判断
function getEasyEmail(user: User): string {
  return user.info?.email ?? 'no email'
}

const user: User = {
  name: 'ts',
  info: {}
}

console.log(getEmail(user))
console.log(getEasyEmail(user))

// 对函数参数使用可选操作符
function addCallback(x: number, y: number, callback?: () => void): void {
  console.log([x, y])
  callback?.()
}