文章目录
- 01.布尔类型boolean
- 02.数字类型number
- 03.字符串string
- 05.总结
- 06.undefined和null
- 07.数组类型
- 08.元组类型
- 09.枚举类型
- 10.any类型
- 11.void类型
- 12.object类型
- 13.联合类型
- 14.类型断言
- 15.类型推断
01.布尔类型boolean
//布尔类型 ---->boolean
//let 变量名:数据类型=值
let flag:boolean=true
flag=false
//flag=10 编译不通过
console.log(flag)
02.数字类型number
//数字类型 ---->number
let a1:number=10//十进制
//a1='哈哈' 编译不通过
let a2:number=0b1010//二进制
let a3:number=0o12//八进制
let a4:number=0xa//十六进制
console.log(a1*10)
console.log(a2)
console.log(a3)
console.log(a4)
03.字符串string
//字符串 ---->string
let str1:string='床前明月光'
//str1=10
let str2:string='疑是地上霜'
let str3:string='举头望明月'
let str4:string='低头望故乡'
console.log(`${str1},${str2},${str3},${str4}`)
//字符串和数字之间拼接输出
let str5:string='字符串'
let a5:number=10
console.log(`${str5},${a5}`)
05.总结
- ts中变量一开始是什么类型,那么后期赋值的时候,只能用这个类型的数据,不允许使用其他类型的数据赋值给当前的这个变量
06.undefined和null
-
undefined
和null
都可以作为其他类型的子类型,把undefined
和null
赋值给其他类型的变量
//需要关闭严格模式,否则编译不通过
let und:undefined=undefined
let nul:null=null
console.log('undefined和null',und,nul)
let num:number=undefined
let number:number=null
console.log('子类型',num,number)
07.数组类型
//数组定义方式1 let 变量名:数据类型[]=[值1,值2,值3]
let arr1:number[]=[10,20,30,40,50]
console.log(arr1)
//数组定义方式2 let 变量名:Array<数据类型>=[值1,值2,值3]
let arr2:Array<number>=[100,200,300]
console.log(arr2)
- 注意问题:数组定义后,里面的数据的类型必须和定义数组的时候是一致的,否则有错误提示信息,也不会编译通过的
08.元组类型
- 在定义数组的时候,类型和数据的个数一开始就已经限定了
let arr3:[string,number,boolean]=['哈哈',100.12345,true]
console.log(arr3)
//可以调用对应类型的方法
//console.log(arr3[1].split('')) 编译不通过,因为number没有split方法
console.log(arr3[0].split(''))
console.log(arr3[1].toFixed(2))
- 注意问题:元组类型在使用的时候,数据的类型的位置和数据的个数,应该和在定义元组的时候的数据类型及位置应该是一致的
09.枚举类型
- 枚举里面的每个数据类型都可以叫元素,每个元素都有自己的编号,编号是从0开始,依次递增增加1
enum Color{
red=1,
green,
blue
}
//定义一个Color的枚举类型的变量来接受枚举的值
let color:Color=Color.red
console.log(color)
console.log(Color.red,Color.green,Color.blue)
console.log(Color[3])
- 枚举中的元素可以是中文的数据值,但是不推荐
enum Gender{
男,
女
}
console.log(Gender.男)
10.any类型
let str:any=100
str='嘿嘿'
console.log(str)
当一个数组中要存储多个数据,个数不确定,类型不确定,此时可以使用any类型来定义数组
let arr:any[]=[100,'哈哈',true]
console.log(arr)
//console.log(arr[0].split('')) 能编译通过,但是在浏览器中会报错
console.log(arr[1].split(''))
11.void类型
在函数声明的时候,在小括号后面使用:vold,代表该函数没有任何的返回值
function showMsg():void{
console.log(new Date())
//return '100' 编译不通过
//return undefined 输出undefined
return null //输出null
}
showMsg()
console.log(showMsg())
定义一个void类型的变量,可以接受一个undefined的值,但是意义不大
let vd:void=undefined
console.log(vd)
12.object类型
//object
function getObj(obj:object):object{
console.log(obj)
return {
name:'大明',
age:18
}
}
let obj:object={
name:'小明',
age:18
}
console.log(getObj(obj))
console.log(getObj('123')) 编译不通过
console.log(getObj(new String('123')))
console.log(getObj(String))
13.联合类型
表示取值可以为多种数据类型中的一种
//需求1:定义一个函数得到一个数据或者字符串值的字符串形式值
function getData(data:number|string):string{
return data.toString()
}
console.log(getData(123))
console.log(getData('999'))
14.类型断言
- 类型断言:手动指定数据类型
- 类型断言语法1---->
<类型>变量名
- 类型断言语法2---->
值 as 类型
需求:定义一个一个函数得到一个数字或字符串值的长度
function getLength(data:number|string):number{
if((<string>data).length){
//return (<string>data).length
return (data as string).length
}else{
return data.toString().length
}
}
console.log(getLength(100))
console.log(getLength('1000'))
15.类型推断
在没有明确的指定类型的时候推测出一个类型
let txt1=100 //number类型
//txt1='100' 编译不通过
console.log(txt1)
let txt2; //any类型
txt2=1000
txt2=false
console.log(txt2)