tft每日頭條

 > 圖文

 > typescript命名注意事項

typescript命名注意事項

圖文 更新时间:2024-10-18 07:54:55

typescript命名注意事項(TypeScript中的any和unknown有區别嗎)1

在TypeScript中,any和unknown是包含所有值的類型。在這裡,我們将研究它們是如何工作的。

TypeScript的兩個頂級類型

TypeScript的兩個頂級類型any和unknown是TypeScript中所謂的頂級類型。引用維基百科:

The top type [...] is the universal type, sometimes called the universal supertype as all other types in any given type system are subtypes [...]. In most cases it is the type which contains every possible [value] in the type system of interest.

也就是說,當将類型視為值集時,any和unknown是包含所有值的集。另外,TypeScript還有底層的never類型,即空集合。

any

如果某個值的類型為any,我們可以對其執行所有操作:

function func(value: any) { 5 * value; value.propName; value[123]; }

每種類型都可分配給any:

let storageLocation: any; storageLocation = null; storageLocation = true; storageLocation = {};

any類型也可以分配給任何其他類型:

function func(value: any) { const a: null = value; const b: boolean = value; const c: object = value; }

對于any類型,我們都會失去TypeScript的靜态類型系統提供給我們的保護。因此,隻有我們不能使用更具體的類型或unknown時,才能将any作為最後手段使用。

例如:JSON.parse()

JSON.parse()取決于動态輸入,這就是返回類型為any的原因:

JSON.parse(text: string): any;

JSON.parse()是在unknown類型之前添加到TypeScript語言中的。如果不是,那麼它的返回類型可能就會被定義為unknown。

unknown

unknown類型是any類型的安全版本。每當你想用any時,試着先用unknown。

在任何允許我們做任何事情的地方,unknown的限制要大得多。

在對unknown類型的值執行任何操作之前,必須首先通過以下方式縮小其類型:

function func(value: unknown) { // Type assertion: (value as number).toFixed(2); } function func(value: unknown) { if (value === 123) { // equality value; value * 5; } } function func(value: unknown) { if (typeof value === 'string') { // type guard value; value.length; } } function func(value: unknown) { assertionFunction(value); value; value.test('abc'); } function assertionFunction(arg: unknown): asserts arg is RegExp { if (! (arg instanceof RegExp)) { throw new TypeError('Not a RegExp: ' arg); } }

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved