未知类型给定数字,但作为字符串强制转换为数字



我有以下代码。

let myVar = unknown;
myVar = 5;
console.log((myVar as string) + 5);

此代码的输出为10。然而,当我们添加字符串和数字时,它应该连接两个。在这种特殊的情况下,我以为我会得到55分;有人能澄清我的误解吗?

Typescript编译为javascript,javascript没有类型。因此,您的代码编译为:

let myVar;
myVar = 5;
console.log(myVar + 5);

并且CCD_ 1是CCD_。

你分配一个数字,然后再加一个数字就可以得到一个数字。


unknown是一个接受任何值的类型,但在您断言或验证它之前,不能将其缩小到更具体的类型。这个过程不会改变值,只是typescript编译器对类型的理解。

有两种方法可以从unknown中获得有用的东西。

您可以测试以下值:

if (typeof myVar === 'number') myVar // myVar is number here
if (typeof myVar === 'string') myVar // myVar is string here

或者,您可以使用类型断言来用as覆盖编译器,这就是您在示例中所做的。这样做不会提供任何类型的安全性,应该避免。

最新更新