ts之类型的使用

162 阅读3分钟

理解

在写ts代码时,需要在最下面写上 export {}

ts在定义变量时,会指定类型,这些类型是已经存在的,必须严格按照类型进行赋值,可以对其修改,但是修改值的类型必须和定义时的类型一致

基本类型

Boolean

let isShow:boolean = true
let isShow:boolean = 123 //会报错 只有布尔类型才可以
console.log(isShow)

string

let name:string = 'xiaoqiang'
let name:string = 123 //会报错 只有字符串类型才可以
console.log(name)

数字number

let age:number = 100 
let age:number = '100' //会报错
console.log(age)

数组

ts中数组只能放同一类型的数据,如果不是,则会报错

第一种定义数组类型数据

let attr:number[] = [1,2,3]
let attr:number[] = [1,2,3,'s'] //会报错
let name:string[] = ['xiaoqiang','wangcai']
console.log(attr)
console.log(name)

第二种定义数组类型的数据

let attr:Array<number> = [1,2,3]
let attr:Array<number> = [1,2,3,'s'] //会报错
let name:Array<string> = ['xiaoqiang','wangcai']
console.log(attr[0])
console.log(name)

元组Tuple

它是一个容器,容器里面可以放不同类型的数据,但是也需要指定,顺序也需要一致

let Stu:[string,age] = ['wangcai',100]
let Stu:[string,age] = [100,'wangcai'] //会报错 顺序不一致
console.log(Stu[0])

枚举 enum

需要先把枚举定义出来,然后再使用

enum Color{
    RED,
    GREEN=20,
    BLUE
}
let colorR:Color = Color.RED
console.log(color) //0 会打印出序号 默认是从0开始 也可以对其赋值
let colorG:Color = Color.GREEN
let colorB:Color = Color.BLUE
console.log(colorG) //20
console.log(colorB) //21
console.log(Color[20]) //GREEN

any

当使用any定义数据时,它可以把任何类型的值赋给这个变量,上面的类型可以修改值,但是值必须和定义时类型一致,any不需要,可以在修改时赋给任何类型的数据

let data:any = 4
data = 'wangcai'
data = [1,2,3]
console.log(data) //[1,2,3]

void

在函数上使用时,说明这个函数没有返回值

function getName(firstname:string,lastname:string):void{
    console.log(firstname+''+lastname)
}
getName('wang','cai')

函数有返回值时

function getName(firstname:string,lastname:string):string{
    return firstname+''+lastname
}
console.log(getName('wang','cai'))

null

null是一个数据类型,它的值只有null,它是所有类型的子类型(可以把它赋给任何类型当数据)

let age:null = null
let name:string = 'wangcai'
name = null
//第二句和第三句可以使用一句表达
let name:string = null
console.log(name) //null
console.log(age)  //null

undefined

undefined是一个数据类型,它的值只有undefined,它是所有类型的子类型(可以把它赋给任何类型当数据)

let age:undefined = undefined
let name:string = 'wangcai'
name = undefined
//第二句和第三句可以使用一句表达
let name:string = undefined
console.log(name) //undefined
console.log(age)  //undefined

断言

就是告诉编译器自己知道这个数据数据是什么类型的,这样就省了编译器的自动识别

let name:any = 'wangcai'
console.log(name.length)

为什么可以计算出length 因为编译器会自动识别出类型是string string有计算length的方法

手动的告诉编译器数据的类型

第一种使用<>
let name:any = 'wangcai'
let strLength = (<string>name).length
console.log(strLength)
第二种使用as
let name:any = 'wangcai'
let strLength = (name as string).length
console.log(strLength)