基本类型
-
类型声明
-
类型声明是TS非常重要的一个特点
-
通过类型声明可以指定TS中变量(参数、形参)的类型
-
指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错
-
简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值,防止随意对变量任意类型的值
-
语法:
-
let 变量: 类型; let 变量: 类型 = 值; function fn(参数: 类型, 参数: 类型): 类型{ ... }
-
-
-
自动类型判断
- TS拥有自动的类型判断机制
- 当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型
- 所以如果你的变量的声明和赋值时同时进行的,可以省略掉类型声明
-
类型:
类型 例子 描述 number 1, -33, 2.5 任意数字 string 'hi', "hi", hi
任意字符串 boolean true、false 布尔值true或false 字面量 其本身 限制变量的值就是该字面量的值 any * 任意类型 unknown * 类型安全的any void 空值(undefined) 没有值(或undefined) never 没有值 不能是任何值 object {name:'孙悟空'} 任意的JS对象 array [1,2,3] 任意JS数组 tuple [4,5] 元素,TS新增类型,固定长度数组 enum enum{A, B} 枚举,TS中新增类型
示例:
//#region 类型声明简单示例 // 声明一个变量a,同时指定它的类型为number let a: number; // a 的类型设置为了number,在以后的使用过程中a的值只能是数字 a = 10; a = 33; // a = 'hello'; // 此行代码会报错,因为变量a的类型是number,不能赋值字符串 let b: string; b = 'hello'; // b = 123; // 声明完变量直接进行赋值 // let c: boolean = false; // 如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测 let c = false; c = true; //#endregion //#region // JS中的函数是不考虑参数的类型和个数的 function sum1(a, b){ return a + b; } sum1(2,"2");//可以成功调用的 // console.log(sum(123, 456)); // 579 // console.log(sum(123, "456")); // "123456" // :number意味着返回的值必须是number function sum(a: number, b: number): number{ return a + b; } let result = sum(123, 456);//只能严格按照类型传参数 //#endregion
字面量
-
也可以使用字面量去指定变量的类型,通过字面量可以确定变量的取值范围
示例:
// 也可以直接使用字面量进行类型声明 let a1: 10;// 定义a1的值是10,不能再改,类似常量 a1 = 110;// 报错 // 可以使用 | 来连接多个类型(联合类型) // 表示b可以是"male",也可以是"female" let b: "male" | "female"; b = "male"; b = "female"; // 表示c可以是boolean,也可以是string let c: boolean | string; c = true; c = 'hello';
any
// any 表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测 // 使用TS时,不建议使用any类型 // let d: any; // 声明变量如果不指定类型,则TS解析器会自动判断变量的类型为any (隐式的any) let d; d = 10; d = 'hello'; d = true;
unknown
类型安全的any
示例:
// unknown 表示未知类型的值 let e: unknown; e = 10; e = "hello"; e = true; let s:string; // d的类型是any,它可以赋值给任意变量 s = d;// 正确 e = 'hello'; s=e;// 错误 unknown类型的变量,不能直接赋值给其他变量 // unknown 实际上就是一个类型安全的any // unknown类型的变量,不能直接赋值给其他变量 if(typeof e === "string"){ s = e; }
enum
enum Color { Red, Green, Blue, } let c: Color = Color.Green; enum Color { Red = 1, Green, Blue, } let c: Color = Color.Green; enum Color { Red = 1, Green = 2, Blue = 4, } let c: Color = Color.Green;
类型断言
有些情况下,变量的类型对于我们来说是很明确,但是TS编译器却并不清楚,此时,可以通过类型断言来告诉编译器变量的类型,断言有两种形式:
// 类型断言,可以用来告诉解析器变量的实际类型 /* * 语法: * 变量 as 类型 * <类型>变量 * * */ // 第一种 s = e as string; // 第二种 s = <string>e;
示例:
//第一种 let someValue: unknown = "this is a string"; let strLength: number = (someValue as string).length; //第二种 let someValue: unknown = "this is a string"; let strLength: number = (<string>someValue).length;
标签:TypeScript,变量,number,TS,let,类型,声明,any From: https://www.cnblogs.com/anjingdian/p/16923614.html