Skip to content

如何将 unknown 类型指定为一个更具体的类型?

参考答案:

  • 使用 typeof 进行类型判断(这些缩小类型范围的技术都有助于TS基于控制流程下的类型分析)
ts
  function unknownToString(value: unknown): string {
    if (typeof value === "string") {
     return value;
    }
  
    return String(value);
  }
  • 对 unknown 类型使用类型断言

要强制编译器信任类型为 unknown 的值为给定类型,则可以使用类型断言:

ts
  const value: unknown = "Hello World";
  const foo: string = value; // Error
  const bar: string = value as string; // OK

断言错了时语法能通过检测,但是运行的时候就会报错了!

ts
  const value: unknown = "Hello World";

  const bar: number = value as number; // runtime Error

题目要点:

作答思路:

在TypeScript中,可以将unknown类型指定为一个更具体的类型,通过类型断言(Type Assertion)或类型保护(Type Guard)来实现。

  1. 类型断言

    typescript
    let value: unknown;
    if (typeof value === 'string') {
      value = 'hello';
    }
  2. 类型保护

    typescript
    let value: unknown;
    if (typeof value === 'string') {
      value = 'hello';
    } else if (typeof value === 'number') {
      value = 42;
    }

考察要点

  1. 类型断言:理解如何使用类型断言将unknown类型指定为一个更具体的类型。
  2. 类型保护:理解如何使用类型保护来安全地处理unknown类型。