簡體   English   中英

如何在另一個類型中獲取 typeof 通用模型的參數?

[英]How to get typeof generic model's parameter inside of another type?

我有一個采用類型 T 的接口:

export interface ValueTimestampModel<T> {
    value: T;
    timestamp: string;
}

我有一個類型應該使用上面的類型通過將 T 的每個參數轉換為 ValueTimestampModel 來轉換給定的 T 類型的ValueTimestampModel

export type ModelWithTimestamp<T> = {
    [P in keyof T]?: ValueTimestampModel<typeof T[P]>
}

所以期望的結果將是 -> 如果我們有 model:

{
   street: string;
   streetNo: number;
}

那么ModelWithTimestamp版本應該是這樣的:

{
   street: {
      value: string,
      timestamp: string
   },
   streetNo: {
      value: number,
      timestamp: string
   }
}

不幸的是,部分typeof T[P]返回編譯錯誤:

'T' only refers to a type, but is being used as a value here.

在這種情況下,typescript 似乎不接受typeof 有沒有其他方法可以實現我正在尋找的東西?

您不需要typeofT[P]已經是類型T中的屬性P的類型:

export interface ValueTimestampModel<T> {
    value: T;
    timestamp: string;
}


export type ModelWithTimestamp<T> = {
    [P in keyof T]?: ValueTimestampModel<T[P]>
}

游樂場鏈接

暫無
暫無

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

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