Node 14.0.0 이상 및 npm 5.2 이상 필요
npx create-react-app [프로젝트 이름] --template typescript
npx create-react-app ./ --template typescript
Node 14.0.0 이상 및 npm 6 이상 필요
npm init react-app [프로젝트 이름] --template typescript
npm init react-app ./ --template typescript
tsc
를 글로벌로 설치한 경우 터미널에 tsc --init
명령어 입력tsc
를 로컬에 설치한 경우 터미널에 npx tsc --init
명령어 입력{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
}
custom.d.ts
파일 생성src
폴더에 custom.d.ts
파일 생성 후 아래 코드 작성declare module '*.svg' {
import * as React from 'react';
export const ReactComponent: React.FunctionComponent<React.SVGProps<
SVGSVGElement
> & { title?: string }>;
const src: string;
export default src;
}
reportWebVitals.ts
파일 수정onPerfEntry
에 타입 지정import { ReportHandler } from 'web-vitals';
const reportWebVitals = (onPerfEntry?: ReportHandler | undefined) => {
if (onPerfEntry && onPerfEntry instanceof Function) {
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
getLCP(onPerfEntry);
getTTFB(onPerfEntry);
});
}
};
export default reportWebVitals;
index.tsx
파일 수정document.getElementById
에 타입 지정const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);