본문 바로가기
버전: 9.x

라우터 병합

비공식 베타 번역

이 페이지는 PageTurner AI로 번역되었습니다(베타). 프로젝트 공식 승인을 받지 않았습니다. 오류를 발견하셨나요? 문제 신고 →

모든 API 코드를 하나의 파일에 작성하는 것은 바람직하지 않습니다. 라우터를 다른 라우터와 병합하는 것은 쉽습니다.

TypeScript 4.1의 템플릿 리터럴 타입 덕분에 타입 안전성을 해치지 않으면서도 프로시저에 접두사를 지정할 수 있습니다.

동작 예제

예제 코드

server.ts
ts
const createRouter = () => {
return trpc.router<Context>();
};
const posts = createRouter()
.mutation('create', {
input: z.object({
title: z.string(),
}),
resolve: ({ input }) => {
// ..
return {
id: 'xxxx',
...input,
};
},
})
.query('list', {
resolve() {
// ..
return [];
},
});
const users = createRouter().query('list', {
resolve() {
// ..
return [];
},
});
const appRouter = createRouter()
.merge('user.', users) // prefix user procedures with "user."
.merge('post.', posts); // prefix post procedures with "post."
server.ts
ts
const createRouter = () => {
return trpc.router<Context>();
};
const posts = createRouter()
.mutation('create', {
input: z.object({
title: z.string(),
}),
resolve: ({ input }) => {
// ..
return {
id: 'xxxx',
...input,
};
},
})
.query('list', {
resolve() {
// ..
return [];
},
});
const users = createRouter().query('list', {
resolve() {
// ..
return [];
},
});
const appRouter = createRouter()
.merge('user.', users) // prefix user procedures with "user."
.merge('post.', posts); // prefix post procedures with "post."