TypeScrip基础类型

109 阅读2分钟

字符串类型

let name: string = "栗子"

let str: string = `我是${name}`

数字类型

let notANumber: number = NaN   //NaN
let num: number = 123       //普通数字
let infinityNumber: number = Infinity     //无穷大
let decimal: number = 6     //十进制
let hex: number = 0xa       //十六进制
let binary: number = 0b1010      //二进制
let octal: number = 0o744       //八进制 

布尔类型

let a: boolean = true
let b: boolean = Boolean(1)    //true
//new Boolean() 返回的是一个 Boolean 对象
let c: Boolean = new Boolean(1)

undefined 和 null

let a: undefined = undefined
let b: null = null

默认情况下 null 和 undefined 是所有类型的子类型, 就是说可以把nullundefined赋值给number 类型的变量。

空值类型

let a: void = undefined
let b: void = null;

function fn(): void {
    //无返回值
}

void表示没有任何类型,当一个函数没有返回值时,其返回值类型是void,声明一个 void 类型的变量,只能为它赋予 undefined 和 null

any类型

let a:any = 123
a = "123"
a = true
a = []
a= {}

unknown类型

let a: unknown = 123

注意:unknown可赋值对象只有unknown 和 any, any可以任意赋值,定义类型为unknow是不能调用属性和方法

数组

//普通定义( 类型[] )
let arr: number[] = [1, 2, 3]

//数组泛型( Array<类型> )
let arr: Array<number> = [1,2,3,4,5]

//声明多维数组
let arr2: number[][] = [[1,2], [3,4]]
let arr2: Array<Array<number>> = [[1,2], [3,4]]

元组 Tuple

let t1: [string, number]
t1 = ["栗子", 18] 

枚举

enum Color {
  Red,
  Green,
  Blue
}

// 枚举数值默认从0开始依次递增
// 根据特定的名称得到对应的枚举数值
let myColor: Color = Color.Green   // 1
let colorName: string = Color[2]   //Blue
console.log(myColor, Color.Red, Color.Blue)

object

object 表示非原始类型,也就是除 numberstringboolean之外的类型。

联合类型

let name: string | number = "栗子"
let name: string | number = 18

function toString(x: number | string) : string {
   return x.toString()
}

类型断言

类型断言有两种形式.一是“尖括号”语法, 另一个为 as 语法

/* 
语法:
    方式一: <类型>值
    方式二: 值 as 类型   tsx中只能用这种方式
*/
function getLength(x: number | string) {
  if ((<string>x).length) {
    return (x as string).length
  } else {
    return x.toString().length
  }
}
console.log(getLength('abcd'), getLength(1234))

类型推断

  • 定义变量时赋值了, 推断为对应的类型
  • 定义变量时没有赋值, 推断为any类型