[英]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.