TypeScript中的那些类型,你造吗?

102 阅读2分钟

TypeScript中的类型

1、数字类型:number

let a:number = 10

2、字符串类型:string

let a:string = 'hello'

3、布尔值类型:boolean

let a:boolean = true

4、使用字面量进行类型声明

  • 可以声明多个变量或者多个变量类型
// a只能取值male或female
let a: 'male'| 'female' = 'male'

// b可以是booleanl类型也可以是string类型
let b: boolean | string = true

5、任意类型:any

  • any表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了ts的类型检测
  • any类型的变量可以赋值给任意变量
// any表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了ts的类型检测
let a:any = 'hello'
a = 10
a = 'hello'
// any类型的变量可以复制给任意变量
let b:boolean;
b = a

6、未知类型:unknown

  • unknown类型的变量不能赋值给其他变量
  • 使用类型断言告诉解析器变量的实际类型
let a:unknown = 'hello'
let b:string;
// 不能将类型“unknown”分配给类型“string”
b = a (不可以)

// 类型断言:两种语法都可以
b = a as string
b = <string>a

7、空值:viod

  • viod用来表示空,以函数为例,就表示没有返回值的函数
function fn():void{
}

8、永远不会返回结果:never

function fn():never{
  throw new Error('报错了')
}

9、对象:object

  • 主要为对象中的属性指定类型
  • 属性名后加上问号,表示属性名是可选的,也就是这个属性可有可无
  • 使用[propName:string]:any表示任意类型的属性
  • 设置函数结构的类型声明:(形参:类型,形参:类型...)=>返回值
// 属性名后加上问号,表示属性名是可选的,也就是这个属性可有可无
let a:{name:string,age?:number} = {
    name:'tom',
    age:18
}
// 使用[propName:string]:any表示任意类型的属性
let b:{name:string,[propName:string]:any} = {
    name:'tom',
    age:18,
    gender:'男'
}
// 设置函数结构的类型声明
let c:(a:number,b:number)=>number = function (a,b){
      return a+b
}

10、数组

  • 两种声明类型
// string[] 表示字符串数组
let array:string[] = ['a','b','c']
// Array<number> 表示数字数组
let array1:Array<number> = [1,2,3]

11、元祖:固定长度的数组

let a:[string,number,boolean] = ['hello',12,true]

12、枚举

enum Gender{
  male=0,
  female=1
}
let obj:{name:string,gender:Gender} = {
  name:'Lisa',
  gender:Gender.male
}
console.log(obj.gender === Gender.female)

13、类型的别名

  • 为类型定义一个别名,从而可以再多个地方重复使用
type myType = 0|1|2
let my1:myType = 0
let my2:myType = 0
let my3:myType = 0