프론트엔드 개발

Next Js + Typescript 본문

Front-End/NextJs

Next Js + Typescript

태나미 2021. 8. 1. 01:38
이번 시간에는 Next JS에 Typescript를 더하여 사용해 볼 것인데, 공식 홈페이지를 보며 따라 하였다.
Typescript 예제

 

사용방법

- 첫 프로젝트를 시작할 때, npm 또는 yarn을 이용하여 사용할 수 있다.

npx create-next-app --ts
# or
yarn create next-app --typescript

 

 

- 기존 프로젝트가 있다면, tsconfig.json 파일을 루트 폴더 바로 아래에 위치시킨다. 

Next.js는 이 파일을 기본값으로 자동 구성한다. 사용자 지정 컴파일러 옵션과 함께 고유한 tsconfig.json을 제공하는 것도 지원한다.

 

그런 다음 터미널에서 'npm run dev' 또는' yarn dev'을 실행하면 다음과 같이 컴파일이 완료되었다고 확인할 수 있다.

이후 ready에 나와있는 url로 접속하면 잘 나타나는 것을 볼 수 있다.

프로젝트 루트에 next-env.d.ts라는 파일이 생성되는데, Next.js가 추천하는 tsconfig 세팅을 사용하기 위해. 언제든지 변경될 수 있으므로 제거하거나 편집할 수 없다고 공식 홈페이지에 나와 있습니다.

기본적으로 Next.js는 명령어 'next build' 를 하게 하게 되면 유형 검사를 수행한다.

개발 중에는 코드 편집기 유형 검사를 사용하는 것이 좋습니다. 오류 보고서를 무시하려면 TypeScript 오류 무시에 대한 설명서를 참조하세요,

 

Static Generation and Server-side Rendering

getStaticProps, getStaticPaths 및 getServerSideProps의 경우,

각각 GetStaticProps, GetStaticPaths 및 GetServerSideProps 유형을 'next'에서 import 해서 사용할 수 있다.

import { GetStaticProps, GetStaticPaths, GetServerSideProps } from 'next'

export const getStaticProps: GetStaticProps = async (context) => {
  // ...
}

export const getStaticPaths: GetStaticPaths = async () => {
  // ...
}

export const getServerSideProps: GetServerSideProps = async (context) => {
  // ...
}
getInitialProps를 사용하는 경우 여기를 참고하세요

API Routes

다음은 API를 사용하는 방법의 예시입니다.

새로 만들어진 프로젝트에서는 pages/api/hello.ts가 만들어져 있어 참고하시면 됩니다.

import type { NextApiRequest, NextApiResponse } from 'next'

export default (req: NextApiRequest, res: NextApiResponse) => {
  res.status(200).json({ name: 'John Doe' })
}

또한 다음과 같이 타입을 추가하여 다음과 같이 작성할 수 있습니다.

import type { NextApiRequest, NextApiResponse } from 'next'

type Data = {
  name: string
}

export default (req: NextApiRequest, res: NextApiResponse<Data>) => {
  res.status(200).json({ name: 'John Doe' })
}

Custom 'App'

App 파일에서 커스텀이 필요한 경우 'next/app'에서 AppProps를 import 하고 다음과 같이 사용할 수 있습니다.

// import App from "next/app";
import type { AppProps /*, AppContext */ } from 'next/app'

function MyApp({ Component, pageProps }: AppProps) {
  return <Component {...pageProps} />
}

// Only uncomment this method if you have blocking data requirements for
// every single page in your application. This disables the ability to
// perform automatic static optimization, causing every page in your app to
// be server-side rendered.
//
// MyApp.getInitialProps = async (appContext: AppContext) => {
//   // calls page's `getInitialProps` and fills `appProps.pageProps`
//   const appProps = await App.getInitialProps(appContext);

//   return { ...appProps }
// }

export default MyApp

Type checking next.config.js

next.config.js 파일은 Babel 또는 TypeScript에 의해 parsing 되지 않으므로 JavaScript 파일이어야 하지만 아래와 같이 JSDoc을 사용하여 IDE에서 일부 유형 검사를 추가할 수 있습니다.

// @ts-check

/**
 * @type {import('next').NextConfig}
 **/
const nextConfig = {
  /* config options here */
}

module.exports = nextConfig

Incremental type checking

Next.js v10.2.1 이후부터, tsconfig.json에서 활성화된 경우 incremental type checking를 지원하므로 더 큰 애플리케이션에서 type checking 속도를 높이는 데 도움이 될 수 있습니다. 이 기능을 활용할 때 최상의 성능을 경험하려면 TypeScript 버전 4.3.2 이상을 사용하는 것이 좋습니다.

'Front-End > NextJs' 카테고리의 다른 글

NextJs - getServerSideProps async await, Promise.all  (0) 2021.12.10
Nest js 11 릴리즈 내용 보기  (1) 2021.07.10
Next js + Styled-Components 셋팅  (0) 2021.07.04
Next js 환경변수  (2) 2021.02.13
Pre-rendering  (0) 2021.02.06
Comments