快速掌握TypeScript类型、类型别名使用方法

155 阅读2分钟

TypeScript中的类型

基本类型

  1. string: 字符串类型
let name: string = '张三'
  1. number: 数字类型
let age: number = 12
  1. boolean: 布尔类型
let isLogin: boolean = true
  1. object: 对象类型
let user: object = {
    name: 'zs',
    age: 12
}
  1. 数组类型
let arr: Array<number> = [1, 2, 3, 5] // 基础写法
let arr1: string[] = ['a', 'b', 'c', 'd'] // 第二种写法,更推荐
  1. null
let user: null = null
  1. undefined
let unde: undefined = undefined

默认null和undefined可以赋值给任意类型,例如

let name: string = null // 不会提示错误
let age: number = undefined // 不会提示错误

tsconfig.json配置文件中通过添加strictNullChecks:true,可以获得更严格的空类型检查,null和undefined只能赋值给自身,上述代码会提示错误

其他类型

  1. 联合类型
let a: string | number = 1
  1. void类型,约束函数返回值,表示函数没有返回值
function sayHi(name: string): void {
    console.log(`hello, my name is ${name}`);
} // :void可以省略不写,没有返回值,默认类型推断就是void
sayHi('Jack')
  1. never类型,约束函数返回值,表示函数永远不会结束
function throwError(msg: string): never{
    throw new Error(msg)
    console.log(123); // 不会执行输出语句
}
  1. 字面量类型,用一些固定值约束,常用于强制约束
let gender: 'male' | 'female'
gender = 'male' // gender只能赋值为male或者female
// 对象的字面量写法,必须按照相关格式赋值,否则提示错误
let user: {
    name: string
    age: number | string
}
user = {
    name: 'zs',
    age: 11
}
  1. 元祖类型,一个固定长度的数组,并且数组中每一项的类型确定
let arr: [string, string, number, boolean]
arr = ['a','b', 123, false]
  1. any类型,会绕开类型检测,相当于没有约束,可以赋值给任意类型,存在隐患
let aaa: any = 123
let bbb: string = aaa // 由于使用了any,不提示错误,存在隐患

类型别名

自定义某个类型可能会重复使用,如

let user: {
    name: string
    age: number
    gender: 'male' | 'female'
}
// 获取用户对象构成的数组
function getUsers():{
    name: string
    age: number
    gender: 'male' | 'female'
}[]{
    return []
}
user = {
    name: 'Jack',
    age: 12,
    gender: 'male'
}

使用类型别名简化如下,同时方便维护

type User = {
    name: string
    age: number
    gender: 'male' | 'female'
}

let user: User
function getUsers():User[]{
    return []
}
user = {
    name: 'Jack',
    age: 12,
    gender: 'male'
}