TypeScript笔记一

88 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

TypeScript在前端的使用是越来越普遍了,之前犹豫了好久到底要不要学,但是目前看来想要在职业方向走的更远,学习TypeScript是不可避免的,不过话说回来,TypeScript的一些定义真是让人头疼,许多专业名称就算看了定义也云里雾里,让人难以理解,类似public、private、抽象类这些看起来都是java的东西呀。😵算了,不懂得地方就先记录下来,试用的多了慢慢就理解了💪🏻。

类型

数据类型实例
布尔值let isDone: boolean = false
数字let decLiteral: number = 6
字符串let name: string = bob${name}
数组let list: number[] = [1,2,3] let list: Array<number> = [1, 2, 3]
元组 Tuplelet x: [string, number]; x = ['hello' , 10]
枚举enum Color {Red = 1, Green, Blue} let c: Color = Color.Green let c: Color = Color[2]
Any<不确定类型>let notSure: any = 4; notSure = "bob"; notSure = false; let list:any[] = [1, true, "free"] list[1] = 100
Void表示没有任何类型
Null/UnderfinedTypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null
Nevernever类型表示的是那些永不存在的值的类型
Objectobject表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型

类型断言

*** ps: 在TypeScript里使用JSX时,只有 as语法断言是被允许的 ***

TypeScript具有ReadonlyArray<T>类型,它与Array<T>相似,只是把所有可变方法去掉了,可以确保数组创建后再也不能被修改,类型断言可以重写被ReadonlyArray<T>类型声明的数据

    let a: number[] = [1, 2, 3, 4];
    let ro: ReadonlyArray<number> = a;
    ro[0] = 12; // error!
    ro.push(5); // error!
    ro.length = 100; // error!
    a = ro; // error! // 把整个ReadonlyArray赋值到一个普通数组也是不可以的
    a = ro as number[]; // 但可以用类型断言重写
  1. "尖括号"语法
    let someValue: any = "this is a string";

    let strLength: number = (<string>someValue).length;
  1. as语法
    let someValue: any = "this is a string" 
    let strLength: number = (someValue as string).length