Typescript 中的 unknown 是什么

对于 unknown 类型,我们必须首先检查当前存储在变量中的类型,然后才能获得 typescript 支持。

当使用 any 类型时——typescript 会忽略我们所做的任何事情,任何事情都是允许的,但这不是我们大多数时候想要的,大多数时候我们仍然希望进行一些类型检查。

那是 unknown 出现的时候——我们告诉 typescript,嘿,我们会得到这个值,但是我们不知道它的类型,所以我们只需要检查几个 if 语句来追踪它并安全地使用它 ,在 if 块中为我们提供了对检查的特定类型的支持。

例如,在下面的代码片段中,我们得到一个错误:

let myString: string;
let remoteData: unknown;

remoteData = 'hello world';
myString = remoteData;

Typescript 中的 unknown 是什么

错误的原因是 myString 必须是字符串,并且 remoteData 的类型未知,因此分配失败。 一个重要的区别是,如果我们对 remoteData 的类型使用 any 而不是 unknown,我们就不会得到错误,因为当我们使用任何 typescript 时,不会为我们提供类型检查。

修复错误的方法是有条件地检查 typeof remoteData 是否为字符串,然后才继续分配:

let myString: string;
let remoteData: unknown;

remoteData = 'hello world';

if (typeof remoteData === 'string') {
  myString = remoteData;
}

在 if 块的范围内 remoteData 保证是一个字符串,因此我们可以访问它上面的所有字符串方法,例如 toLowerCase。

在 if 块之外,类型仍然未知。

因此,在使用 unknown 类型时,我们必须在进行分配和调用特定于类型的方法之前进行条件检查,与 any 类型相比,它仍然提供了大量的功能和类型检查。

当我们不知道我们将获得什么类型的值时,unknown 是比任何类型更好的类型,但我们知道我们想用它做什么。 在这些情况下,我们可以使用 unknown 类型在条件块中获得类型支持。

免责声明:
1.本站所有内容由本站原创、网络转载、消息撰写、网友投稿等几部分组成。
2.本站原创文字内容若未经特别声明,则遵循协议CC3.0共享协议,转载请务必注明原文链接。
3.本站部分来源于网络转载的文章信息是出于传递更多信息之目的,不意味着赞同其观点。
4.本站所有源码与软件均为原作者提供,仅供学习和研究使用。
5.如您对本网站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。
火焰兔 » Typescript 中的 unknown 是什么