SelectFields type

使用植根於 T 的欄位樹狀結構的後序遍歷,產生 T 的有效 AI 搜尋 OData $select路徑的聯集。

type SelectFields<TModel> = (() => (T extends TModel ? true : false) extends () => (T extends never ? true : false) ? string : (() => (T extends TModel ? true : false) extends () => (T extends any ? true : false) ? string : (() => (T extends TModel ? true : false) extends () => (T extends object ? true : false) ? string : (TModel extends Elem[] ? (Elem extends object ? SelectFields<Elem> : never) : {[Key in keyof TModel]: (Key extends string ? (NonNullable<...[...]> extends object ? (NonNullable<...> extends ExcludedODataTypes ? Key : (... extends ... ? ... : ...)) : Key) : never);}[(keyof TModel) & string] & string))))