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