簡體   English   中英

為所有可能的對象屬性類型定義一個類型

[英]Define a type for all possible object property types

當我們將鼠標懸停在任意對象屬性的typeof ,我們會看到可能的類型列表:

"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"

在此處輸入圖片說明

我們如何才能將該列表捕獲為用戶定義的type ,而不像這樣對每個列表進行硬編碼:

type ObjectPropertyType =
    string |
    number |
    bigint |
    boolean |
    symbol |
    undefined |
    object |
    Function;

typeof是一個 JavaScript 內置函數,它將變量的(運行時!)類型作為字符串(!)返回。 Typescript 類型與此完全不同,它們只是具有相同的名稱,因為 TypeScript 在這里被設計為接近 JavaScript。

特別是"string" | "number"類型"string" | "number" "string" | "number"string | number string | number一樣。 "Hello"42可以分配給后者,但不能分配給前者。

這里的混淆是typeof來自 JS 並且只返回 JavaScript 中定義的類型的字符串表示; 這與 TypeScript 完全沒有關系。 TypeScript 所做的就是知道可能的值,從而返回所有這些值的類型聯合,以獲得最佳的類型。

所以要回答這個問題

我們如何將該列表捕獲為用戶定義的類型

這些類型一開始就不一樣。 例如, typeof null === "object" ,因此即使是 TypeScript 類型null也必須出現在該列表中。 事實上,當 typeof 應用於該類型的變量時,可以產生這些值中的任何一個的類型列表就是any ,所以

type ObjectPropertyType = any;

暫無
暫無

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

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