簡體   English   中英

如何在TypeScript中獲取泛型的特定“實例”的“內部類型”

[英]How to get an “inner type” of a specific “instance” of a generic in TypeScript

除了標題之外,找不到更好的詞來解釋它,所以我將讓代碼來討論:

let var1 = someExternalLibraryMethod(); // assume var1 is implicitly Promise<string>

let var2: typeof var1; // this works, and this way I can "bind" the types of both vars without hardcoding them to the same type (i.e. instead of let var2: Promise<string>;)

let var3: ???????; //I want to "bind" this type to var1's "inner" type without hardcoding it (i.e. instead of let var3: string;)

我對Promise<string>選擇是任意的。 我正在尋找一種可以與其他通用類型的“實例”(例如rxjs.Observable<number>rxjs.Observable<number> mongoose.Schema<{_id: number}>

它也應該無需硬編碼“外部”類型就可以工作。 也就是說,“承諾”一詞不應出現在任何地方。 如果TypeScript確實支持此功能,我想語法會像

let var3: InnerTypes<typeof var1>[0]; // This is a guess and does not actually work

打字稿版本:3.x

您可以使用條件類型。 這是一般的想法:

type Container = ReturnType<typeof someExternalLibraryMethod>; // Promise<string>
type Inner = Container extends Promise<infer I> ? I : never;

關鍵在於,可以在extends查詢內部推斷內部類型。

操場

暫無
暫無

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

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