簡體   English   中英

可選的<T, Props> TypeScript 中的泛型類型

[英]Optional<T, Props> generic type in TypeScript

我正在嘗試創建類型Optional<T, TProps>其中T - 初始類型, TProps - 必須是可選的屬性的聯合類型。

例如:
type A = Optional<{a: string, b: string}, 'a'>
const a: A = {b: 'foo'} // No Error

我希望這會起作用,但它不起作用type Optional<T extends object, TProps extends keyof T> = {[TKey in keyof T]: TKey extends TProps ? T[TKey] | never : T[TKey]} type Optional<T extends object, TProps extends keyof T> = {[TKey in keyof T]: TKey extends TProps ? T[TKey] | never : T[TKey]}

根據您上面的代碼,我認為您需要連接ExcludePick解決方案。

我正在和他們一起玩,似乎以下解決方案有效:

type Optional<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>> & Partial<Pick<T, K>>

下面的例子將顯示一個錯誤,如果你想添加到b不正確的字段並且如果你刪除可選參數不會突出顯示:

interface BI {
  a: number
  b: number
  g: string,
  f: boolean
}

const a: BI = {a: 1, b: 2, g: 'sdf', f: true}

const b: Optional<BI, 'g'> = {a: 5, b: 1, f: true}

暫無
暫無

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

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