簡體   English   中英

如何使用可選鍵聲明 object?

[英]How to declare object with optional keys?

此代碼不會編譯:

interface A {
  [key: string]?: string
}

雖然這樣做:

type Partial<T> = {
    [P in keyof T]?: T[P]
}

為什么,以及如何解決第一個問題?

附言

作為一種解決方案,可以使用Partial但它看起來不太好:

type A = Partial<{
  [key: string]: string
}>

當您使用索引簽名時,默認情況下所有鍵都是可選的,因為您只指定鍵的類型 ( string | number ) 及其值類型,而不是實際需要的鍵。 所以不需要加? .

interface A {
  [key: string]: string
}

類型別名相同:

type A1 = {
  [key: string]: string
}

記錄實用程序(與類型別名相同):

type A2 = Record<string, string>;

type Partial<T> = { [P in keyof T]?: T[P] }是一個映射類型 它基於另一種類型創建新類型,並且在此示例中可以使屬性成為可選的。 順便說一下, Partial包含在 typescript 實用程序類型中,無需重新聲明。

暫無
暫無

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

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