簡體   English   中英

Typescript 在 trpc 中重載未命名的 function

[英]Typescript overloading unnamed function in trpc

我有一條典型的 trpc 路線。 它獲取posts 如果有 id 參數,它會獲取 1 個帖子。 如果沒有,它會獲取所有帖子。 重載未命名的 function 的語法是什么,在這種情況下我應該把重載代碼放在哪里?

publicProcedure
    .input(z.object({ id: z.string().nullish() }).nullish())
    .query(async ({ input }) => {

      const url = "https://example.com/posts";
      const json = (await got.get(url).json()) as IPosts[];

      if (input && input.id) {
        const posts = json.find(p => p.id === input.id);
        if (posts) return posts;
      }

      return json;
    })

不確定下面是否有效或者是正確的語法但希望放置類似下面的內容之一來重載 function

type IOverload = {
   (id: undefined): IPosts[];
   (id: string): IPost; 
}

// or

function unnamedFn<T extends string | null>(id: T): T extends string ? IPost : IPosts[]

你的第一個想法很好!

type IPost = {};

type IOverload = {
    (id: undefined): IPost[];
    (id: string): IPost;
}

declare const overloaded: IOverload;

overloaded(undefined)
//^? IPost[]

overloaded('')
//^? IPost

操場

暫無
暫無

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

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