Knex 在 TypeScript 中的 OrderBy

我正在尝试学习如何实现高级 Typescript 类型


在knex.js中,一个实现orderBy是以下数组


{ column: string, order: "asc" | "desc" }

我想构建一个打字稿类型


type OrderBy<T> = {

  column: K in keyof T;

  order?: "asc" | "desc";

}

因此,如果 T 是{ "propA": true, "propB": 1 },它会智能感知column应该是"propA"or"propB"并且顺序是"asc"or "desc"。


不幸的是,它不起作用。我尝试使用现有的实现,但要么它们不够具体,要么我不明白它是如何工作的。


我将如何着手实施这个?


Helenr
浏览 70回答 1
1回答

慕的地6264312

要获取通用 T 中的键,您只需要执行keyof T,您的代码将如下所示:interface Column { "propA": true, "propB": 1 }type OrderBy<T> = {&nbsp; column: keyof T;&nbsp; order?: "asc" | "desc";}// Since knex's OrderBy is an array, your code could be likeconst knex: Array<OrderBy<Column>> = [{ column: "propA", order: "asc"&nbsp; }]你可以在 TS playground https://tsplay.dev/lm0Lam中看到这段代码
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript