Skip to content

unknown 是什么类型?

Posted on:2024年9月4日 at 01:29

在 TypeScript 中,unknown 表示一个未知的值。它是 TypeScript 3.0 引入的,相比 any 类型,unknown 更加安全,因为它要求在进行操作之前必须先进行类型检查。

特点和使用

  1. 类型安全性

    • unknown:代表任何值,但在你对 unknown 类型的值进行操作之前,必须首先进行类型检查或类型断言。这意味着你不能直接对 unknown 类型的值进行任何操作,直到你明确知道它的实际类型。
    • any:允许对值进行任何操作,不需要先进行类型检查。这可能会导致类型安全问题,因为你可以对 any 类型的值进行任何操作而不受到编译器的约束。
  2. 类型保护

    • 当你将一个值的类型声明为 unknown 时,必须使用类型保护机制(如 typeofinstanceof 或类型断言)来确保类型安全。

示例

function handleUnknown(value: unknown) {
  if (typeof value === "string") {
    // 只有在 value 确定为 string 类型时才能使用 string 方法
    console.log(value.toUpperCase());
  } else if (typeof value === "number") {
    // 只有在 value 确定为 number 类型时才能使用 number 方法
    console.log(value.toFixed(2));
  } else {
    console.log("Unsupported type");
  }
}

在这个示例中,handleUnknown 函数对 unknown 类型的值进行了类型检查,确保在实际操作之前确认了它的类型。这种方式比直接使用 any 更安全,因为它强制要求进行类型检查。

unknownany 的区别

原文转自:https://fe.ecool.fun/topic/bf8ce811-717a-4486-98c0-61726f5bf9d9