te6.in
Blog
글 코드 조각 태그
글
코드 조각
태그
  • iOS 7
  • 소셜 미디어 6
  • 생산성 5
  • 팁 5
  • 회고 5
  • Google 4
  • iPhone 4
  • macOS 4
  • 단축어 4
  • 자동화 4
  • 해커톤 4
  • 후기 4
  • AI 3
  • LLM 3
  • TypeScript 3
  • 뉴스레터 3
  • 대전 3
  • 영문학 3
  • 일상 3
  • GitHub 2
  • iCloud 2
  • Instagram 2
  • 군대 2
  • 디자인 시스템 2
  • 유틸리티 2
  • 카카오톡 2
  • 캘린더 2
  • AirDrop 1
  • Apps Script 1
  • Astro 1
  • BeReal 1
  • ChatGPT 1
  • Gemini 1
  • Git 1
  • Homebrew 1
  • iMessage 1
  • JavaScript 1
  • JSON 1
  • KAIST 1
  • KUCC 1
  • NameDrop 1
  • Next.js 1
  • Node.js 1
  • Perplexity 1
  • Raycast 1
  • SaaS 1
  • SPARCS 1
  • Spotlight 1
  • Swift 1
  • UX 1
  • UX 라이팅 1
  • 공군해커톤 1
  • 당근 1
  • 돈 1
  • 디지털 권리 1
  • 멀티모달 1
  • 번역 1
  • 법률 1
  • 브랜딩 1
  • 블로그 1
  • 스프레드시트 1
  • 신한 1
  • 절약 1
  • 텔레그램 1
  • 핀테크 1
  • 현지화 1

Next.js searchParams에 적절한 타입 주기

  • TypeScript 3
  • Next.js 1
  • 찬휘 te6
작성 2024. 7. 16. 수정 2024. 7. 16.
// next.ts

export interface NextAppPage<T extends string> {
  params: { slug: string }; // dynamic route segment로 [slug]를 사용했음을 가정
  searchParams: Partial<Record<T, string | string[] | undefined>>;
}

dynamic route segment로 [slug]를 사용했음을 가정한 상황입니다.

searchParams와 마찬가지로 key에 제너릭을 넣어 줘도 좋을 것 같습니다.

// @/app/auth/page.tsx

// ...
type AuthPageProps = NextAppPage<"redirectTo">;

export default async function AuthPage({ searchParams: { redirectTo } }: AuthPageProps) {
  const supabase = createServerClient();

  const {
    data: { user },
  } = await supabase.auth.getUser();

  if (user) {
    redirect(typeof redirectTo === "string" && redirectTo ? redirectTo : "/dashboard");
  }

  return <div>{/* ... */}</div>;
}
File-system conventions: page.js | Next.js
API reference for the page.js file.
nextjs.org 새 탭에서 열립니다.
File-system conventions: Dynamic Segments | Next.js
Dynamic Route Segments can be used to programmatically generate route segments from dynamic data.
nextjs.org 새 탭에서 열립니다.
JSON 응답에 적절한 타입 주기
이전 글
타입스크립트가 tsconfig 읽고 컴파일하는 대상 파일 알아내기
다음 글
모든 코드 조각 보기
블로그 마지막 업데이트 2025년 11월 10일 01:48

microsoft/fluentui-emoji is licensed under the MIT License.
Copyright (c) Microsoft Corporation.