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 的类型,并根据类型执行相应的操作。
unknown 与 any 的区别:
unknown 类型是类型安全的,你不能对 unknown 类型的值执行任何操作,除非你先进行类型检查或类型断言。any 类型是非类型安全的,你可以对 any 类型的值执行任何操作,而无需进行类型检查或类型断言,这可能会导致运行时错误。
泛型中的 unknown 类型:
在泛型中,如果你想要表示一个可以接受任何类型的参数,你可以使用 unknown 作为泛型类型。例如:
function identity<T>(arg: T): T {
return arg;
}
let result = identity<unknown>("Hello, world!");
在这个例子中,T 被指定为 unknown,这意味着 arg 可以是任何类型的值。然而,由于 unknown 类型的,你不能直接对 result 执行任何操作,除非你进行类型检查或类型断言。
总的来说,unknown 类型是一个更安全的选择,当你需要处理可能为任何类型的值时,它可以帮助你避免类型错误。