# 类型

# 基础类型

// 布尔类型
const bool: boolean = true

// 数值
const num: number = 5

// 字符串
const str: string = 'string'

// 数组
const arr: string[] = ['s', 't', 'r']
const Arr: Array<number> = [5]
const anyscript: any[] = [5, 'str']

// 元祖 定义一个已知长度和类型的数组
const tuple: [string, number] = ['zq', 5]

// 枚举
enum Color {
  red = 1, // 默认值为 1 不加默认值 默认从 0 开始
  white = 2,
  black
}
const color: Color = Color.white

// 任意类型
const everything: any = ''
const everything2: unknown = '' // 推荐使用 unknown

// void 函数无返回值
function say(): void {
  console.log('hi')
}

// never 抛出异常 或 无限循环 的函数返回值
function error(): never {
  throw new Error('error')
}

// 联合类型
const value: string | number = 'str'

// 交叉类型 一般是对象 
const instance: T & U = new T()

// 类型断言 联合类型一般会用到 可以手动指定一个类型
function length(a: string | number): number {
  return (a as string).length
  return (<string>x).length
}

# 类型别名

  • 多用于联合类型
type alias = string | number | boolean
interface A {
  id: number
}
interface B {
  age: number
}
type C = A & B

# 字符串字面量类型

type name = 'status' | 'type' | 'level'

const person: name = 'status' // 类似枚举  约束变量取值

# Promise

interface Response {
  code: number
  data: any[],
  message: string
}

const p: Promise<Response> = new Promise(fn)