TypeScript语法(十)

83 阅读2分钟

TypeScript类型 - never类型

never 表示永远不会发生值的类型,比如一个函数:

如果一个函数中是一个死循环或者抛出一个异常,那么这个函数会返回东西吗?

不会,那么写void类型或者其他类型作为返回值类型都不合适,我们就可以使用never类型;

function handleMessage(message: string | number | boolean) {
  switch (typeof message) {
    case 'string':
      console.log("string处理方式处理message")
      break
    case 'number':
      console.log("number处理方式处理message")
      break
    case 'boolean':
      console.log("boolean处理方式处理message")
      break
    default:
      const check: never = message
  }
}

handleMessage("abc")
handleMessage(123)
handleMessage(true)

TypeScript类型 - tuple类型

tuple是元组类型,很多语言中也有这种数据类型,比如Python、Swift等。

const info: any[] = ["萨博", 18, 1.88]
const infoObj = {
    name: "萨博",
    age: 18,
    height: 1.88
 }

const name = info[0]
console.log(name.length)

那么tuple和数组有什么区别呢?

首先,数组中通常建议存放相同类型的元素,不同类型的元素是不推荐放在数组中。(可以放在对象或者元组 中)

其次,元组中每个元素都有自己特性的类型,根据索引值获取到的值可以确定对应的类型;

Tuple的应用场景

那么tuple在什么地方使用的是最多的呢?

tuple通常可以作为返回的值,在使用的时候会非常的方便

function useState(state: any) {
  let currentState = state
  const changeState = (newState: any) => {
    currentState = newState
  }

  const tuple: [any, (newState: any) => void] = [currentState, changeState]
  return tuple
}

const [counter, setCounter] = useState(10);
setCounter(1000)

const [title, setTitle] = useState("abc")

export {}

函数的参数类型

函数是JavaScript非常重要的组成部分,TypeScript允许我们指定函数的参数和返回值的类型。

参数的类型注解

声明函数时,可以在每个参数后添加类型注解,以声明函数接受的参数类型:

// 给参数加上类型注解: num1: number, num2: number
// 给返回值加上类型注释: (): number
// 在开发中,通常情况下可以不写返回值的类型(自动推导)
function sum(num1: number, num2: number) {
  return num1 + num2
}

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第38天,点击查看活动详情