Typescript - 1. 基础类型

118 阅读3分钟

在 TypeScript 中,基础类型(也称为原始类型)与 JavaScript 的基础类型大致相同,但 TypeScript 通过类型注解提供了额外的类型检查功能。以下是 TypeScript 中的主要基础类型及其用法示例:

1. 布尔值 (boolean)

布尔值类型表示逻辑上的真或假。它只有两个可能的值:truefalse

let isDone: boolean = true;

2. 数字 (number)

数字类型表示所有的数字,无论是整数还是浮点数。在 TypeScript 中,所有的数字都是浮点数,符合 IEEE 754 标准。

let decimal: number = 6;
let hex: number = 0xf00d;  // 十六进制
let binary: number = 0b1010;  // 二进制
let octal: number = 0o744;  // 八进制

3. 字符串 (string)

字符串类型表示文本数据。可以使用双引号(")、单引号(')或者反引号(`)来表示字符串。

let color: string = "blue";
color = 'red';

let fullName: string = `John Doe`;
let age: number = 30;
let sentence: string = `Hello, my name is ${fullName}. I'll be ${age + 1} years old next month.`;

4. 数组 (Array)

数组类型用于表示一组相同类型的值。有两种定义数组的方法:

  • 使用元素类型后接 []
let list: number[] = [1, 2, 3];
  • 使用泛型数组类型:
let list: Array<number> = [1, 2, 3];

5. 元组 (Tuple)

元组类型允许表示一个已知数量和类型的数组,各元素的类型不必相同。

let x: [string, number];
x = ["hello", 10];  // OK
// x = [10, "hello"];  // Error

6. 枚举 (enum)

枚举类型用于定义一组命名常量。枚举成员默认从零开始编号,也可以手动指定。

enum Color {Red, Green, Blue}
let c: Color = Color.Green;

enum ColorWithValues {Red = 1, Green, Blue}
let cWithValue: ColorWithValues = ColorWithValues.Green;

enum ColorCustomValues {Red = 1, Green = 2, Blue = 4}
let cCustom: ColorCustomValues = ColorCustomValues.Blue;

// 获取枚举成员的名称
let colorName: string = Color[2];  // 'Green'

7. 任意类型 (any)

any 类型表示可以是任意类型,用于表示允许赋值为任何类型的变量。通常用于处理第三方库、用户输入或动态内容。

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;  // okay, definitely a boolean

// 可以包含任意类型的数组
let list: any[] = [1, true, "free"];
list[1] = 100;

8. 空值 (void)

void 类型表示没有任何类型。通常用于函数表示没有返回值。

function warnUser(): void {
    console.log("This is my warning message");
}

let unusable: void = undefined;  // 只能赋值 undefined 或 null (严格模式下)

9. nullundefined

nullundefined 分别表示空值和未定义。这两个类型本身有各自的类型。

let u: undefined = undefined;
let n: null = null;

10. 从不 (never)

never 类型表示永不存在的值的类型,例如那些总是会抛出异常或根本不会有返回值的函数。

function error(message: string): never {
    throw new Error(message);
}

function fail() {
    return error("Something failed");
}

function infiniteLoop(): never {
    while (true) {}
}

11. object

object 类型表示非原始类型,即不包括 number, string, boolean, symbol, null, 或 undefined

declare function create(o: object | null): void;

create({ prop: 0 });  // OK
create(null);  // OK

// create(42);  // Error
// create("string");  // Error
// create(false);  // Error
// create(undefined);  // Error

了解这些基础类型是学习 TypeScript 的第一步,它们为静态类型检查和提高代码质量提供了坚实的基础。