給定一個型別,我如何撰寫一個遞回映射型別,該型別生成的型別具有所有相同的鍵,但它們的型別是字串而不是它們的傳入型別?具體來說,我想處理嵌套物件和陣列。
type MySourceType = {
field1 :string,
field2: number,
field3: number[],
field4: Date,
field5: {
nestedField1: number,
nestedField2: number[]
nestedField3: Date,
}
}
type MyDestinationType = MakeAllFieldsString<MySourceType>;
應該產生:
type MyDestinationType = {
field1 :string,
field2: string,
field3: string[],
field4: string,
field5: {
nestedField1: string,
nestedField2: string[]
nestedField3: string,
}
}
這適用于常規的“平面”物件,但無法處理嵌套的物件和陣列
type JsonObject<T> = {[Key in keyof T]: string; }
我也試過這個,但它似乎也沒有達到我的預期。
type NestedJsonObject<T> = {
[Key in keyof T]: typeof T[Key] extends object ? JsonObject<T[Key]> : string;
}
uj5u.com熱心網友回復:
你可以這樣做:
type MySourceType = {
field1: string;
field2: number;
field3: number[];
field4: Date;
field5: {
nestedField1: number;
nestedField2: number[];
nestedField3: Date;
};
};
type Literal = { [k: string]: {} };
type JsonObject<T> = T extends Array<infer U>
? U extends Literal
? Array<JsonObject<U>>
: Array<string>
: T extends Literal
? { [Key in keyof T]: JsonObject<T[Key]> }
: string;
type MyDestinationType = JsonObject<MySourceType>;
打字稿游樂場:https : //tsplay.dev/WYBlgw
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/369882.html
上一篇:獲取工會成員的型別
