Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- @Moditying @Query
- 깃 토큰 만료
- 스프링 데이타 JPA
- 코딩 어?
- 객체의 밸류값만 찾기
- sql 문자열 패턴 검색
- 재귀스왑
- 배엘에서 스왑
- 우분투 시간 변경
- 5.3.8 Modifying Queries
- 단어 제거
- 문자열 중복
- indexOf()
- sql like연산자
- 중복단어제거
- ...점점점문법
- 중첩배열
- ubuntu타임존
- 레디스 확인
- js 문자열을 문자배열로
- 문자열순서바꾸기
- 시퀄 문법
- 프론트엔드 스쿨
- 중첩배열평탄화
- 중복 문자열
- lastIndexOf()
- 제로베이스
- 중복문자제거
- 중복된 단어
- 객체의키값만 찾기
Archives
- Today
- Total
코딩기록
.ts 와 .tsx 의 차이 본문
728x90
언제 파일뒤 확장자에 .ts를 쓰고 언제 .tsx를 써야할까?
jsx를 쓰면 .tsx
jsx를 안쓰면 .ts
✅ .ts vs .tsx 사용 기준표
사용 예시 JSX 사용 여부 추천 확장자 설명
✅ 유틸 함수 (formatDate, calculateTax) | ❌ 없음 | .ts | UI와 무관한 일반 로직 |
✅ 타입 정의 (types.ts, user.types.ts) | ❌ 없음 | .ts | 인터페이스, 타입 등만 포함 |
✅ API 요청 (api.ts, useAxios.ts) | ❌ 없음 | .ts | fetch, axios 등 비동기 로직 |
✅ 커스텀 훅 (useAuth, useModal) | ❌ 없음 | .ts | 훅 내부에서 JSX를 리턴하지 않으면 .ts |
✅ React 컴포넌트 (Header, ProductCard) | ✅ 있음 | .tsx | JSX 포함 시 반드시 .tsx |
✅ 페이지 컴포넌트 (Home, About) | ✅ 있음 | .tsx | 라우팅 대상 React 컴포넌트 |
✅ Context Provider (ThemeProvider, AuthProvider) | ✅ 있음 | .tsx | JSX로 children 렌더링 시 |
❗ JSX는 없지만 import React만 있는 경우 | ❌ 없음 | .ts | 단, JSX를 리턴하지 않으면 .ts 유지 가능 |
🧩 예시 폴더 구조 기준 추천
src/
├── components/ # 모두 .tsx (컴포넌트니까 JSX 포함)
│ └── Button.tsx
├── hooks/ # 대부분 .ts (JSX 없음)
│ └── useCart.ts
├── pages/ # 라우팅 대상, JSX 포함 → .tsx
│ └── Home.tsx
├── types/ # 타입 정의만 → .ts
│ └── product.types.ts
├── utils/ # 계산, 포맷, 필터 등 → .ts
│ └── formatPrice.ts
├── App.tsx # JSX 포함 → .tsx
└── main.tsx # JSX 포함 → .tsx
💡 기억 포인트
- ✔ JSX를 "쓰면" .tsx
- ✔ JSX를 "안 쓰면" .ts
- ❌ JSX를 쓰는 데 .ts로 만들면 컴파일 오류가 남.
반응형
'프론트' 카테고리의 다른 글
useEffect (0) | 2025.03.27 |
---|---|
React) Vite 프로젝트와 Next.js 프로젝트 차이 (0) | 2025.03.25 |
JavaScript를 공부하면서 느낀점 (0) | 2024.12.31 |
JS) js 코드 작성 순서 / 예시 - 별점등록 (0) | 2024.12.18 |
css) carousel 캐러셀/스라이드쇼/이미지로케이터. 스크린리더 사용자를 위한 접근성. carousel wai-aria. 이미지카드-figure, figcaption (0) | 2024.10.31 |
Comments