我有一个典型的trpc路径。它获取posts
。如果有一个id参数,它获取1个post。如果没有,它获取所有post。重载一个未命名函数的语法是什么?在这种情况下,我应该把重载代码放在哪里?
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;
})
不确定下面的代码是否有效或者语法是否正确,但是希望添加类似下面的代码来重载函数
type IOverload = {
(id: undefined): IPosts[];
(id: string): IPost;
}
// or
function unnamedFn<T extends string | null>(id: T): T extends string ? IPost : IPosts[]
1条答案
按热度按时间hi3rlvi21#
你的第一个想法很好!
Playground