TypeScript 什么是未知类型,何时使用它
在TypeScript中,任何值都可以赋给unknown类型,但是没有类型断言的情况下,unknown只能赋给自身和any类型。类似地,对未知值进行任何操作都需要首先断言或将其限制为更精确的类型。与any类似,我们可以像对待其他类型一样把任何值赋给unknown;然而,与any不同的是,我们不能访问未知值的任何属性,也不能调用或构造它们。另外,仅将未知值赋给unknown或any。
未知类型用于使我们的代码具有类型安全性。当我们使用未知类型时,我们需要编写额外的代码,但最终我们的代码将具有类型安全性。类型安全性就是防止类型错误。
让我们通过以下示例来了解何时使用未知类型,何时不使用。
示例1:
当其他值类型的变量被赋给未知类型时。
在此示例中,我们将不同类型的值赋给了未知变量。我们可以看到它不会引发任何错误。在TypeScript中,未知类型处于变量类型的顶部。
Javascript
<script>
let val: unknown;
console.log(val);
val = true;
console.log(val);
val = 7;
console.log(val);
val = "geeks for geeks";
console.log(val);
val = [1, 2, 3, 4];
console.log(val);
val = { name: "rachel" };
console.log(val);
val = Math.random();
console.log(val);
val = null;
console.log(val);
val = undefined;
console.log(val);
</script>
输出:
undefined
true
7
geeks for geeks
[ 1, 2, 3, 4 ]
{ name: 'rachel' }
0.776446663785197
null
undefined
示例2:将unknown分配给unknown和其他类型值
如前言所述,未知类型的变量只能分配给另一个未知类型的变量或任意类型的变量。未知类型被显示为“undefined”。
Javascript
<script>
let a: unknown;
console.log(a);
let b: unknown = a;
console.log(b);
let c: any = a;
console.log(c);
</script>
输出:
undefined
undefined
undefined
示例3: 在这个示例中,我们试图将一个未知类型的值赋给一个类型为数字的变量,这会引发一个错误。
Javascript
<script>
let unknown: unknown;
let num: number = unknown; // Error
console.log(num);
</script>
输出:
error TS2322: Type 'unknown' is not assignable to type 'number'.
let num: number = a; // Error
示例4: 在 TypeScript 中,我们无法对未知类型的值执行操作。不能对未知类型的值执行对象类型操作。
Javascript
<script>
let unknown_val: unknown;
unknown_val.split("");
console.log(unknown_val);
</script>
输出:
error TS2339: Property 'split' does not exist on type 'unknown'.
极客教程