基于本文回答

播面 播面

刷题像听歌,多听自然懂
0
评论

TypeScript 中的基本数据类型有哪些?

知识点图片

TypeScript 中的数据类型可以分为三类:JavaScript 原生基础类型对象/集合类型以及 TypeScript 特有的特殊类型

以下是详细的分类和说明:

1. JavaScript 原生基础类型 (Primitives)

TypeScript 继承了 JavaScript 的所有原始数据类型。

  • Boolean (布尔值)
    typescript
    let isDone: boolean = false;
  • Number (数字)
    支持整数、浮点数,以及二进制、八进制、十六进制字面量。
    typescript
    let decLiteral: number = 6;
    let hexLiteral: number = 0xf00d;
  • String (字符串)
    可以使用单引号、双引号或模板字符串(反引号)。
    typescript
    let name: string = "bob";
    let sentence: string = `Hello, my name is ${name}.`;
  • Null 和 Undefined
    默认情况下,它们是所有类型的子类型(可以赋值给 number 等)。但在 strictNullChecks: true(推荐配置)下,它们只能赋值给 anyunknown 或它们各自的类型(void 可以接受 undefined)。
    typescript
    let u: undefined = undefined;
    let n: null = null;
  • Symbol (符号)
    ES6 引入,表示独一无二的值。
    typescript
    let sym1 = Symbol("key");
    let sym2 = Symbol("key");
    // sym1 === sym2 为 false
  • BigInt (大整数)
    ES2020 引入,用于表示比 2^53 - 1 更大的整数。
    typescript
    let big: bigint = 100n;

2. 集合与引用类型

  • Array (数组)
    有两种写法:
    typescript
    let list1: number[] = [1, 2, 3]; // 推荐写法
    let list2: Array<number> = [1, 2, 3]; // 泛型写法
  • Tuple (元组)
    TypeScript 特有概念。表示一个已知元素数量和类型的数组,各元素的类型不必相同。
    typescript
    let x: [string, number];
    x = ["hello", 10]; // OK
    // x = [10, "hello"]; // Error
  • Object (对象)
    表示非原始类型(即除 number, string, boolean, symbol, null, undefined 之外的类型)。
    typescript
    let obj: object = { prop: 0 };
    注意:通常在定义对象形状时,会使用接口(Interface)或类型别名(Type Alias),而不是直接用 object

3. TypeScript 特有的特殊类型

  • Enum (枚举)
    用于定义一组命名常量,使代码更具可读性。
    typescript
    enum Color { Red, Green, Blue }
    let c: Color = Color.Green;
  • Any (任意类型)
    逃生舱。允许赋值为任意类型,并且可以访问任意属性或方法。会跳过类型检查,应尽量少用
    typescript
    let notSure: any = 4;
    notSure = "maybe a string instead";
    notSure.toFixed(); // 编译器不会报错,即使运行时可能出错
  • Unknown (未知类型)
    安全的 Any。可以赋值为任意类型,但在进行类型断言或类型收窄之前,不允许对该变量进行任何操作(如访问属性、函数调用)。
    typescript
    let value: unknown = 4;
    // value.toFixed(); // Error: Object is of type 'unknown'.
    if (typeof value === "number") {
        value.toFixed(); // OK
    }
  • Void (空)
    通常用于表示函数没有返回值。
    typescript
    function warnUser(): void {
        console.log("This is my warning message");
    }
  • Never (永不存在的值)
    表示那些永远不存在的值的类型。常用于抛出错误的函数或无限循环的函数返回值。
    typescript
    function error(message: string): never {
        throw new Error(message);
    }

总结图表

类型 描述 示例
boolean 逻辑真/假 true, false
number 所有数字 123, 1.5, 0xf00d
string 文本 "Hello", 'Hi'
array 数组 number[], Array<string>
tuple 固定长度和类型的数组 [string, number]
enum 命名常量集合 enum Color {Red, Blue}
any 任意类型(放弃检查) 任何值
unknown 未知类型(安全检查) 任何值(需断言后使用)
void 无返回值 函数返回类型
never 永远不会有值 抛错函数, 死循环
object 非原始类型 {}
00:00
00:00