[NextJS,TypeScript] Custom Type을 한 곳에서 관리 하는 법

2023. 12. 21. 10:45·FrontEnd

Custom Type을 한 곳에서 관리 하는 법

각각의 component와 pages마다 type을 선언할 때 마다, type이나 interface를 재선언해주는것이 올바르지 않다. 라고 생각했고, 다른 한 파일에 타입을 지정해놓고 필요할때 마다 꺼내서 사용하면 좋을 것 같았다.

분명 프로젝트 내에서 필요한 기능이기 때문에 당연히 NextJS 프레임 워크에서 구현이 되어 있었다.

 

next-env.d.ts

nextjs 프로젝트를 생성 했을때, 위의 파일이 자동적으로 생성된다.

이 파일은 nextjs 공식문서에서도 타입과 인터페이스를 관리하는 파일로 해석한다.

좋은점이 이 파일에 타입을 지정 했을 시, 자동으로 import없이 타입들을 사용 가능하다는 것이 큰 장점이다.

api url같은 상수 값도 여기에 type지정이 가능하다.

 

// next-env.d.ts

/// <reference types="next" />
/// <reference types="next/image-types/global" />

// 예시: 전역적으로 사용될 사용자 정의 타입
interface CustomType {
    id: string;
    name: string;
}

type PropsVocaItem = {
    bookmark: boolean;
    content: string;
    englishTitle: string;
    id: number;
    koreanTitle: string;
    thumbnailName: string;
    thumbnailPath: string;
}

// 예시: 프로젝트 전체에서 사용될 상수
declare const API_BASE_URL: string;

// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.

 

이런식으로, 타입을 여기다 지정하고 다른 폴더나 파일에서 타입지정을 할 수 있다,

이거 몰라서 계속 타입선언 해줬는데 너무 편한 기능인 것 같다.

 

대신 무조건 선언해줘야 하는 부분이 있다.

tsconfig.json에 반드시 include해줘야하는데

이방법은 tsconfig.json 내부에 include 배열 안에 "next-env.d.ts"를 반드시 추가해줘야 한다.

이 구분은 기본적으로 빌드시에 자동생성되어 있지만 없다면 추가해주자

// tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "paths": {
      "@/*": [
        "./*"
      ]
    },
    "forceConsistentCasingInFileNames": true
  },
  "include": [
    "next-env.d.ts",
    "**/*.ts",
    "**/*.tsx",
    ".next/types/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}
반응형

'FrontEnd' 카테고리의 다른 글

[React] 재사용 가능한 Custom Modal 만들기  (2) 2024.01.30
[NextJS] JEST로 NextJS 테스트 코드 작성하기  (2) 2024.01.05
[NextJS] NextJS 14의 변경점 및 업데이트 알아보기  (0) 2023.11.22
[NextJS] JWT토큰을 이용하여 로그인 기능 구현하기  (2) 2023.11.13
'FrontEnd' 카테고리의 다른 글
  • [React] 재사용 가능한 Custom Modal 만들기
  • [NextJS] JEST로 NextJS 테스트 코드 작성하기
  • [NextJS] NextJS 14의 변경점 및 업데이트 알아보기
  • [NextJS] JWT토큰을 이용하여 로그인 기능 구현하기
kangminhyuk1111
kangminhyuk1111
열심히 공부 하세요
  • kangminhyuk1111
    강민혁 개발블로그
    kangminhyuk1111
  • 전체
    오늘
    어제
    • 분류 전체보기 (127)
      • BackEnd (28)
        • 토비의 스프링 (1)
        • Spring (13)
        • Java (21)
        • Socket (4)
      • 독후감 (5)
      • CS (4)
      • SQL (3)
        • RealMySQL (1)
      • 알고리즘 (10)
      • 공부 내용 (4)
        • 유튜브 (1)
        • API (2)
        • WEB (1)
      • FrontEnd (10)
        • React (5)
      • Typescript (11)
        • Javascript (1)
      • 공부중 (6)
      • Android (2)
        • Kotlin (2)
      • 외부활동 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 블로그 이사 왔습니다
  • 인기 글

  • 태그

    API
    srt
    Riot api
    nodejs
    공부
    JavaScript
    TypeScript
    유튜브
    매크로
    flask
    알고리즘
    후기
    자동매매
    Kotlin
    Backend
    SQL
    Python
    nextjs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
kangminhyuk1111
[NextJS,TypeScript] Custom Type을 한 곳에서 관리 하는 법
상단으로

티스토리툴바