TypeScript 是 JavaScript 的一个超集,它添加了静态类型检查功能。这不仅可以提高开发效率,还能在编写代码阶段发现潜在错误,为大型项目或团队协作提供更强的规模化支持。本文将详细介绍 TypeScript 中的数据类型,包括基础类型、任意类型、联合类型、类型别名、枚举、数组、元组、高级类型及示例。
基础类型
布尔值
最基本的数据类型是简单的 true/false 值,它在 TypeScript 里叫做 boolean。
let isDone: boolean = false;
数字
与 JavaScript 一样,TypeScript 里的所有数字都是浮点数。这些数字的类型是 number。
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
字符串
另一种基础部分是字符串。如同 JavaScript,TypeScript 也使用双引号 (") 或单引号 (') 表示字符串。
let color: string = "blue";
color = 'red';
数组
TypeScript 像 JavaScript 一样可以操作数组元素。有两种方式可以定义数组。第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组:
let list: number[] = [1, 2, 3];
第二种方式是使用数组泛型,Array<元素类型>:
let list: Array<number> = [1, 2, 3];
元组 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let x: [string, number];
x = ["hello", 10];
枚举
enum 类型是对 JavaScript 标准数据类型的一个补充。使用枚举类型可以为一组数值赋予友好的名字。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
Any
有时候,我们会需要在编程阶段还不清楚类型的变量指定一个类型。这些值可能来自于动态的内容,比如来自用户输入或第三方库。这种情况下,我们可以使用 any 类型来标记这些变量。
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
高级类型
联合类型
联合类型表示一个值可以是几种类型之一。用竖线(|)分隔每个类型,所以 number | string | boolean 表示一个值可以是 number,string,或 boolean。
let multiType: number | string | boolean;
multiType = 20; // okay
multiType = "hello"; // okay
multiType = false; // okay
字面量类型
你可以通过指定一个变量只能是几个字面量之一来缩小它的范围来进一步控制类型。
let literalType: "hello" | "world" | 42;
literalType = "hello"; // okay
literalType = 42; // okay
// literalType = "anythingElse"; // Error: Type '"anythingElse"' is not assignable to type '"hello" | "world" | 42'.
类型别名
类型别名用来给一个类型起一个新名字。类型别名有时和接口很像,但是可以作用于原始值,联合类型,元组以及其它任何你需要手写的类型。
type StringOrNumber = string | number;
function processValue(value: StringOrNumber) {
// ...
}
类型推论
TypeScript 会在没有明确的指定类型的时候推测出一个类型,即“类型推论”(Type Inference)。
let someValue = "this is a string";
// `someValue` is inferred to be of type `string`
类型断言
有时你会遇到这样的情况,你会比 TypeScript 更了解某个值的详细信息。通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。类型断言像是其他语言里的类型转换,但是不进行特殊的数据检查和解构。
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
小结
在 TypeScript 的宏大世界中,了解不同的数据类型及其用法是构建强健和类型安全应用程序的基础。本文提供了基础类型和高级类型的详细描述及充足的示例,希望能够帮助您更好地理解和掌握 TypeScript 数据类型的使用。随着 TypeScript 带给我们的不断创新和改进,我们可以构建更加健壮和维护性更强的代码,最终提高我们软件开发的效率和质量。