TypeScript 提供了丰富的类型系统,本文将阐述元组、枚举、联合类型及类型转换等多个方面。
1. 元组(Tuple)
1.1 元组概述
元组是 TypeScript 中的一种特殊数据结构,用于表示已知数量和类型的元素集合。与数组不同,元组中的元素类型可以不同。
1.2 创建元组
let person: [string, number] = ["Alice", 30];
- 第一个元素是字符串类型,第二个元素是数字类型。
- 元组可以通过索引访问其元素:
console.log(person[0]); // 输出: "Alice"
console.log(person[1]); // 输出: 30
2. 枚举类型(Enum)
2.1 枚举概述
枚举是一种用于定义命名常量集合的数据类型,能够让代码更加清晰可读。
2.2 数字枚举
enum Direction {
Up = 1,
Down,
Left,
Right
}
console.log(Direction.Up); // 输出: 1
console.log(Direction.Right); // 输出: 4
2.3 字符串枚举
enum Colors {
Red = "RED",
Green = "GREEN",
Blue = "BLUE"
}
console.log(Colors.Red); // 输出: "RED"
3. unknown 类型
3.1 unknown 概述
unknown
表示未知类型,是 TypeScript 中最安全的顶级类型之一。
3.2 使用示例
let value: unknown;
value = "Hello";
value = 123;
if (typeof value === "string") {
console.log(value.toUpperCase()); // 确保类型是 string 后才可以调用 string 方法
}
4. any 类型
4.1 any 概述
any
类型可以表示任意类型的值,但会跳过类型检查,因此使用时要谨慎。
4.2 示例
let anything: any = "Hello World";
anything = 42;
console.log(anything.toFixed(2)); // 42.00
注意:相比
any
类型,unknown
更加安全,因为它要求明确的类型检查。
5. Null 和 undefined 类型
5.1 概述
null
:表示一个明确为空的值。undefined
:表示一个变量已声明但未初始化。
5.2 示例
let value1: null = null;
let value2: undefined = undefined;
6. 联合类型
6.1 联合类型概述
联合类型允许一个变量接受多种类型的值。
6.2 使用示例
let id: number | string;
id = 123; // 可以是数字
id = "ABC"; // 也可以是字符串
6.3 联合类型的类型保护
function printId(id: number | string) {
if (typeof id === "number") {
console.log(`数字ID: ${id}`);
} else {
console.log(`字符串ID: ${id}`);
}
}
7. 类型转换
7.1 类型断言
类型断言可以显式地告诉 TypeScript 变量的具体类型。
let someValue: unknown = "Hello TypeScript";
let strLength: number = (someValue as string).length;
console.log(strLength); // 输出: 15
7.2 使用 <>
语法
let anotherValue: unknown = "TypeScript";
let length: number = (<string>anotherValue).length;
7.3类型转换函数
TypeScript提供了一些内置的类型转换函数:
-
parseInt()
:将字符串转换为整数 -
parseFloat()
:将字符串转换为浮点数 -
toString()
:将其他类型转换为字符串 -
Number()
:将其他类型转换为数字 -
Boolean()
:将其他类型转换为布尔值 -
String()
:将其他类型转换为字符串// 类型转换函数示例 let strNumber: string = "123"; let num1: number = parseInt(strNumber); let num2: number = Number(strNumber); let booleanValue: boolean = Boolean(strNumber); let strValue: string = String(num1); console.log(num1); // 输出:123 console.log(num2); // 输出:123 console.log(booleanValue); // 输出:true console.log(strValue); // 输出:"123"
凡是过去,皆为序章;凡是未来,皆有可期。
标签:类型转换,TypeScript,console,log,元组,let,类型,string From: https://blog.csdn.net/time_silence/article/details/145129022