基础类型
ts 支持 js的数据类型 和 实用的枚举类型
类型注解 只能赋值限制的类型的值
布尔值 boolean
(() => {
let flag: boolean = true
console.log(flag) //true
})()
数字 number
(() => {
let num1: number = 10 //十进制
let num2: number = 0b1010 //二进制
let num3: number = 0o12 //四进制
let num4: number = 0xe //八进制
console.log(num1,num2,num3,num4) // 10 10 10 10
})()
字符串 string
(() => {
let str: string = '字符串'
console.log(str) // 字符串
})()
undefined 和 null
这两个值有自己的类型 undefined 和 null 这两个值 可以作为所有类型的子类型使用
(() => {
let und: undefined = undefined
let nul: null = null
console.log(und, nul) //undefined null
// undefined 和 null 这两个值 可以作为所有类型的子类型使用
let num:number = 123
num = null
console.log(num) // null
})()
数组
// 数组定义后,里面的类型必须和数组定义时的类型是一致的
(() => {
let Arr: number[] = [1, 2, 3, 4, 5]
let Arr1: Array<number> = [1, 2, 3, 4, 5]
console.log(Arr,Arr1) //[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
})()
元组
(() => {
// 元组类型在定义元组时数据类型和长度已经确定了
let Arr: [string, number, boolean] = ['苹果', 1, false]
console.log(Arr) //['苹果', 1, false]
})()
枚举类型 enum
对js标准数据类型的补充 将常用的数据设置成枚举类型调用
(() => {
// 枚举里面每个值叫做元素每一个元素都有自己的编号 从0开始依次递增
// 可以手动指定成员的编号
// 可以通过编号选取枚举中的值
// 可以是文的值 不推荐使用
enum Color {
red = 9,
blue,
green,
中文
}
let color: Color = Color.red
let color1: Color = Color.blue
console.log(color,color1,Color[10]) // 9 10 'blue'
})()
any
不确定当前类型为什么时 使用any类型 支持任意类型的数据
(() => {
let any: any = "任意类型"
// 使用any可以用于定义未知 数组长度 未知值类型 的数组
let anyArr: any[] = [23,'1',false]
console.log(any,anyArr)
})()
void
void类型与any类型相反,表示没有任意类型,当一个方法没有返回值的时候通常使用void类型
(() => {
function showMsg(): void {
console.log('void类型')
return
}
console.log(showMsg()) // void类型 undefined
})()
object
(() => {
// 定义一个函数是,参数是object类型,返回值是object类型
function backObj(obj: object): object {
console.log(obj)
return {
name: '东北吴彦祖',
gender: '男',
age: 25
}
}
let obj = { name: '吴彦祖' }
// 函数对象
let obj1 = function () {
console.log(123123)
}
// 通过构造函数返回的对象
let obj2 = new Date()
console.log(backObj(obj))
console.log(backObj(obj1))
console.log(backObj(obj2))
})()
联合类型
联合类型 (Union Types) 表适取值可以为多种类型中的一种
(() => {
function getString(str:number|string):string {
return str.toString()
}
getString(123)
getString('123')
})()
类型断言
告诉编译是什么类型
(() => {
// 类型断言类似其他语言中的类型转换,但不进行特殊的数据检查和解构。只在编译阶段起作用。
// 类型断言有两种语法 <> 和 as
function getString(str: number | string): string {
// 如果参数是字符串没有必要再调用一遍toString
if ((str as string).length) { //建议使用as语法
return (<string>str)
} else {
return str.toString()
}
}
console.log(getString(123))
console.log(getString('12354'))
})()
类型推测
ts在没有明确的指定类型的时候推测出一个类型
编译器自动 推测一个类型注解