簡體   English   中英

打字稿類型斷言

[英]Typescript Type Assertion

假設我有一個包含許多變量的接口,並且在使用它時我不想初始化所有變量,所以我只需要放置any類型的斷言。 我只想知道這兩個是否相同:

例如:

export interface Foo {
  a: string;
  b: number;
  c: Bar[];
  d: string;
  e: Bar;
}

let foo: Foo = {} as any;

與...相同

let foo: Foo | any = {};

不,他們不一樣。

第一

以下是更安全的方法:

let foo: Foo = {} as any;

你做不到

let foo: Foo = {} as any;
foo = {}; // Error  

第二

以下內容使您面臨危險,例如

let foo: Foo | any = {};
foo = {}; // OKAY!

她們不一樣。 您必須查看編譯器如何分解每個語句。

  1. 聲明
  2. 變量名
  3. 類型聲明符
  4. 申報類型
  5. 分配符號
  6. 演員
  7. 演員類型

所以

 | 1 | 2 |3| 4       |5| 4 | 5 | 6
  let foo : Foo       = {}   as  any;
  let foo : Foo | any = {};

因此,第一個語句不允許 any為類型(4),用於存儲在變量(2),其中所述第二個確實的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM