字符串类型
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 是所有类型的子类型, 就是说可以把null和undefined赋值给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 表示非原始类型,也就是除 number,string,boolean之外的类型。
联合类型
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类型