typeScript学习-TS类型

空白格k / 2023-08-08 / 原文

typeScript学习

常用的24中 TS 类型

基本类型:

number, string, boolean, symbol, null, undefined

根类型:

Object, {}

Object:除了 null 和 undefined,其他类型都可以赋值给 Object 类型,简写{}。

对象类型:

Array, object, function

枚举:

enum

其他特殊类型:

any, unknown, never, void, 元组(tuple), 可变元组


never:
// dataFlowAnalysisWithNever 方法穷尽了 DataFlow 的所有可能类型。
// 使用 never 避免出现未来扩展新的类没有对应类型的实现,目的就是写出类型绝对安全的代码。
type DataFlow = string | number

// type DataFlow = string | number | boolean
function dataFlowAnalysisWithNever(dataFlow:DataFlow){
  if(typeof dataFlow === 'string'){
    console.log("字符串类型:",dataFlow.length)
  }else if(typeof dataFlow === 'number'){
    console.log("数值类型:",dataFlow.toFixed(2))
  }else{
    // 当前 data 为 never 类型
    let data = dataFlow  
  }
}
dataFlowAnalysisWithNever("abc")
dataFlowAnalysisWithNever(3.1415926)

合成类型:

联合类型, 交叉类型

联合类型:

let str:srting | number = "abc"
str=3

交叉类型:

type Obj1 = {username:string}
type Obj2 = {age:number}
let obj:Obj1={username:'zhangsan'}
let obj2:Obj2={age:23}
let obj3:Obj1 & Obj2 = {username:'wangwu',age:30}

// 错误情况
// let str2:string & number = 3

字面量数据类型:

// type A = number | string
// let a:A = "abc"
// type num = number
// let n:num = 3
type num = 1 | 2 | 3
let n:num = 2
// 错误情况
// let n:num = 4

type increaseFlag = 0 | 1
function isStartUp(increase:
increaseFlag){
  if(
increase){
    console.log('open')
  }else{
    console.log('close')
  }
}
isStartUp(0)
// 错误情况
// isStartUp(2)