TypeScript基础语法——基础类型
基础类型
- 和js基本相同,还添加了枚举类型。
- 声明方法:变量名:数据类型=值
布尔值 boolean
let flag: boolean = true
console.log(flag)
数字 number
可以用十进制,二进制(0b开头),八进制(0o开头),十六进制(0x开头表示)输出的都是十进制的数据。
let a1: number = 10//十进制
let a2: number = 0b1010//二进制
let a3: number = 0o12//八进制
let a4: number = 0xa//十六进制
console.log(a1)
console.log(a2)
console.log(a3)
console.log(a4)
字符串 string
//字符串类型:string
let str1: string = '床前明月光'
let str2: string = '疑是地上霜'
console.log(`${str1},${str2}`)
//字符串和数字之间的拼接
let str3: string = '我有这么多的钱:'
let num: number = 1000000
console.log(str3 + num)
undefined&null
undefined和null都可以作为其它类型的子类型。他们可以赋值给其他类型的变量。
let und: undefined = undefined
let nll: null = null
console.log(und)
console.log(nll)
数组 Array
- 声明方式1:let 变量名:数据类型[]=[v1,v2,v3]
- 声明方式2:泛型方式。let 变量名:Array<数据类型>=[]
- 数组定义后,里面的数据类型不同不能被编译通过
let arr1: number[] = [10, 20, 30, 40]
let arr2: Array<number> = [100, 200, 300]
console.log(arr1)
console.log(arr2)
元组
- 定义数组的时候里面的数据类型和个数在一开始就限定了。
let arr3: [string, number, boolean] = ['小甜甜', 100, true]
console.log(arr3)
console.log(arr3[1])//100
any
- 放一个变量是any类型,可以传入任何类型的值
let str: any = 100
str='年少不知富婆好,错把少女当成宝'
console.log(str)
- 当一个数组中要存储多个数据,个数不确定,类型不确定,此时可以使用any类型来定义数组
let arr: any[] = [123, '年少不知软饭香', '错把青春倒插秧']
console.log(arr)
console.log(arr[1].split(''))
//这种情况下也没有错误的提示信息,但是在浏览器中会报错
//console.log(arr[0].split(''))
void
- void类型,在函数声明之后的:加void表示没有任何返回值.
function showMsg(): void {
console.log('只要富婆把握住,连夜搬进大别墅')
}
console.log(showMsg())
//return undefined类型
- 定义一个void类型的值可以接受undefined的值。意义不大。
let vd: void = undefined
console.log(vd)
对象类型 object
- 定义一个函数,参数是obj,返回值也是obj
function getObj(obj: object): object{
console.log(obj)
return {
name: 'kkx',
age:27
}
}
console.log(getObj({ name: "dxy", age: "female" }))
//{name: "dxy", age: "female"}
//{name: "kkx", age: 27}
联合类型 Union Types
- 表示取值可以为多种类型中的一种
- 需求1: 定义一个函数得到一个数字或字符串值的字符串形式值
function getString(str:number|string):string {
return str.toString()
}
console.log(123)
console.log('123')
- 需求2: 定义一个一个函数得到一个数字或字符串值的长度
function getLength(str: number | string):number {
//return str.toString().length
//如果str本身是string类型,那么就没必要调用tostring方法
//类型断言:告诉编译器,我知道自己在做什么
//方式1:(<type>value)
//方式2:value as type
if ((<string>str).length) {
//str是string类型
return (str as string).length
} else {
return str.toString().length
}
}
console.log(getLength('0123456'))
console.log(getLength(123))
类型断言
- 方式1:(value)
- 方式2:value as type
类型推断
在变量没有明确指定的时候根据赋值推测出一个类型,如:
let txt = 100
console.log(txt)//编译器推断txt为number类型
any类型:声明时不赋值
let txt2;
txt2 = 123
txt2='abc'
console.log(txt2)//abc