TypeScript未知泛型——unknown和any

作者 : admin 本文共856个字,预计阅读时间需要3分钟 发布时间: 2024-06-7 共3人阅读

在 TypeScript 中,如果你想要表示一个泛型变量,但你不知道或不关心它具体是什么类型,你可以使用 any 类型。然而,any
类型会绕过类型检查,这可能不是你想要的。为了保持类型安全性,TypeScript 提供了一个特殊的类型
unknown,它可以用来表示任何类型的值,但在使用之前需要进行类型检查或类型断言。

unknown 类型示例:

function processValue(value: unknown) {
    if (typeof value === "string") {
        console.log(value.toUpperCase());
    } else if (typeof value === "number") {
        console.log(value.toFixed(2));
    }
    // ... 其他类型检查
}

在这个例子中,value 的类型被声明为 unknown,这意味着它可以是任何类型的值。在函数内部,我们使用 typeof 来检查 value 的类型,并根据类型执行相应的操作。

unknownany 的区别:

  • unknown 类型是类型安全的,你不能对 unknown 类型的值执行任何操作,除非你先进行类型检查或类型断言。
  • any 类型是非类型安全的,你可以对 any 类型的值执行任何操作,而无需进行类型检查或类型断言,这可能会导致运行时错误。

泛型中的 unknown 类型:

在泛型中,如果你想要表示一个可以接受任何类型的参数,你可以使用 unknown 作为泛型类型。例如:

function identity<T>(arg: T): T {
    return arg;
}

let result = identity<unknown>("Hello, world!"); // 这里 `T` 被指定为 `unknown`

在这个例子中,T 被指定为 unknown,这意味着 arg 可以是任何类型的值。然而,由于 unknown 类型的限制,你不能直接对 result 执行任何操作,除非你进行类型检查或类型断言。

总的来说,unknown 类型是一个更安全的选择,当你需要处理可能为任何类型的值时,它可以帮助你避免类型错误。

本站无任何商业行为
个人在线分享 » TypeScript未知泛型——unknown和any
E-->