typeScript 中的类型比JavaScriptzh主要多了Tuple(元组)、Enum(枚举)、void(无类型)、Never等类型。在我们定义变量、函数、类、接口等时候,要在名字后面增加对应的类型。
1、boolean
let isDone:boolean = true
2、number
let isNumber:number = 123
3、string
let isString:string = 'Amy'
当然也支持字符串模板
console.log(`my name is ${isString}`)
4、array
let arr:number[] = [1,2,3]
let arr1:Array<number> = [1,2,3]
有2种定义数组的方式,数组里面的元素也要定义其
类型
5、Tuple
tuple 元组表示一个已知元素数量和类型的的数组。类型可以不同,元组中的数量和类型必须与定义的保持一致
let tupleList:[number,string] = [12,'amy']
元组中元素的数量,元素对应的类型都必须一致,否则会报错
let tupleList:[number,string] = [12,'amy',false]// error 越界
6、Enum
(1)枚举使用关键词Enum来定义。enum默认值为0,并不断递增
enum Color {
red,blue,yellow
}
let color:Color = Color.red
(2)枚举也可以自定义赋值
enum Color {
red="红色",blue="蓝色",yellow="黄色"
}
let color:Color = Color.red
7、Any
当我们不清楚使用的数据类型时,我们可以使用any来替代
let notSure:any = 123
notSure = 'amy'
let list:any[]=[12,'amy',false]
8、void
void 与any刚刚好相反,表示没有任意一种类型 ,常用于函数没有返回任何东西时使用
function warnUser(): void {
console.log("This is my warning message");
}
void类型只能赋值undefined和null(null测试也不能赋值给void类型)
let unusable: void = undefined;
9、null and undefined
let n:null = null
let u:undefined = undefined
null和undefined只能赋值给void和它们各自的类型
10、never
never类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
11、类型断言
有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。
(1)尖括号”语法
let someValue: any = '这是一个断言式'
let strLength:number = (<string>someValue).length
console.log(strLength)
(2)as语法
let someValue: any = '这是一个断言式'
let strLength:number = (someValue as string).length
网友评论