React 프로젝트에 TypeScript를 도입하면 컴포넌트 간의 데이터 흐름을 명확하게 정의할 수 있고, 런타임 에러를 사전에 방지할 수 있습니다. 가장 기본이 되는 Props, State, 그리고 Event Handler에 타입을 적용하는 방법을 풍부한 예제와 함께 알아보겠습니다.1. 컴포넌트 Props에 타입 적용하기Props는 부모 컴포넌트로부터 전달받는 데이터이므로, 인터페이스(interface)를 사용하여 그 구조를 정의하는 것이 정석입니다.기초 예제: 기본 Props 정의interface GreetingProps { name: string; age?: number; // 선택적 Props isLoggedIn: boolean;}// React.FC를 사용하는 방식 (최근에는 권장되지 않기..
타입스크립트 프로젝트를 진행하다 보면 npm install로 설치한 라이브러리가 타입을 지원하지 않아 Could not find a declaration file for module...이라는 에러를 마주할 때가 있습니다.대부분은 @types/라이브러리명을 통해 해결할 수 있지만, 사내 라이브러리나 아주 오래된 오픈소스의 경우 직접 **선언 파일(.d.ts)**을 작성해야 합니다.1. 선언 파일(.d.ts)이란?.d.ts 파일은 Declaration의 약자로, 자바스크립트로 작성된 코드의 타입 정보만을 담고 있는 파일입니다. 런타임 코드(구현부)는 포함하지 않으며, 컴파일 타임에 타입스크립트가 코드의 구조를 이해하도록 돕는 역할을 합니다.2. 기본 키워드: declare타입스크립트에게 "이 변수나 함수는..
타입스크립트를 사용하다 보면 비슷한 구조의 인터페이스를 여러 개 만들어야 하거나, 입력된 타입에 따라 결과 타입을 유연하게 결정해야 하는 상황을 마주하게 됩니다.이 가이드에서는 중복 없는 타입 정의를 위한 맵드 타입과, 타입 시스템에 논리 구조를 부여하는 조건부 타입 및 infer 키워드에 대해 상세히 다룹니다.1. 맵드 타입 (Mapped Types)맵드 타입은 자바스크립트 배열의 map 함수처럼, 타입 내의 프로퍼티들을 순회하며 새로운 프로퍼티 타입을 생성하는 문법입니다.1.1. 기본 문법type NewType = { [K in keyof ExistingType]: NewPropertyType;};keyof ExistingType: 기존 타입의 모든 키(Property Names)를 가져옵니다.K ..
타입스크립트를 사용하다 보면 비슷한 구조의 인터페이스를 여러 개 만들어야 하는 상황을 마주하게 됩니다. 예를 들어, 모든 필드가 필수인 타입이 있고, 이를 수정하기 위해 모든 필드가 선택 사항(?)인 타입이 필요한 경우입니다.이때 **맵드 타입(Mapped Types)**을 사용하면 기존 타입을 가공하여 중복 없이 새로운 타입을 정의할 수 있습니다.1. 맵드 타입이란?맵드 타입은 자바스크립트 배열의 map 함수처럼, 타입 내의 프로퍼티들을 순회하며 새로운 프로퍼티 타입을 생성하는 문법입니다.기본 문법type NewType = { [K in keyof ExistingType]: NewPropertyType;};keyof ExistingType: 기존 타입의 모든 키(Property Names)를 가져옵니..
타입스크립트를 사용하다 보면 이미 정의된 인터페이스나 타입을 조금만 수정해서 재사용하고 싶은 경우가 많습니다. 이때 유틸리티 타입을 활용하면 코드 중복을 획기적으로 줄이고 타입 안정성을 유지할 수 있습니다.1. Partial: 모든 프로퍼티를 선택 사항으로Partial 타입은 인터페이스의 모든 프로퍼티를 optional(?)로 변환합니다. 주로 수정(Update) 기능을 구현할 때 유용합니다.실무 예제: 프로필 정보 업데이트사용자의 전체 정보 중 변경된 부분만 서버에 보낼 때 사용합니다.interface User { id: number; name: string; email: string; age: number;}// Partial를 사용하면 모든 속성이 있어도 되고 없어도 되는 상태가 됩니다.fu..
현대 소프트웨어 개발에서 **객체지향 프로그래밍(OOP)**은 복잡한 로직을 관리 가능한 단위로 나누는 강력한 도구입니다. 그중에서도 **추상화(Abstraction)**는 불필요한 세부 사항을 숨기고 핵심적인 기능만을 노출하여 코드의 재사용성과 유지보수성을 높이는 핵심 개념입니다.TypeScript에서는 interface와 class(특히 abstract class)를 통해 이 추상화를 완벽하게 구현할 수 있습니다.1. 추상화(Abstraction)란 무엇인가?추상화는 "무엇을(What)" 하는지는 정의하지만, "어떻게(How)" 하는지는 정의하지 않는 것을 의미합니다. 사용자는 내부 로직이 어떻게 돌아가는지 몰라도, 제공된 인터페이스만 보고 기능을 사용할 수 있게 됩니다.왜 추상화가 필요한가?코드 결..
TypeScript로 프로젝트를 진행하다 보면, 연관된 상수 값들을 그룹화해야 하는 상황을 자주 마주하게 됩니다. 이때 가장 먼저 떠오르는 도구는 Enum입니다. 하지만 최근에는 const 객체와 as const 단언을 사용하는 방식이 더 선호되기도 합니다.오늘은 이 두 방식의 차이점을 **성능(번들 사이즈, 트리 쉐이킹)**과 가독성(개발자 경험) 측면에서 심층 비교해 보겠습니다.1. TypeScript 열거형 (Enum)Enum은 관련된 상수들의 집합을 정의할 때 사용하는 TypeScript만의 고유한 문법입니다.코드 예제enum UserRole { Admin = 'ADMIN', Editor = 'EDITOR', Viewer = 'VIEWER'}function checkAccess(role: U..
타입스크립트(TypeScript)에서 가장 중요한 개념 중 하나인 '타입 가드(Type Guard)'에 대한 블로그 게시글을 작성해 드립니다. 이 글은 typeof, instanceof, 그리고 사용자 정의 타입 가드인 is를 중심으로 풍부한 예제와 함께 구성되었습니다.코드 스니펫 # 타입 가드(Type Guard): typeof, instanceof, is를 활용한 안전한 타입 좁히기타입스크립트를 사용하다 보면 유니온 타입(Union Type)을 자주 접하게 됩니다. 여러 타입을 허용함으로써 유연성을 얻지만, 특정 타입에만 존재하는 속성이나 메서드에 접근하려고 할 때 컴파일러가 경고를 보냅니다. 이때 필요한 것이 바로 **'타입 좁히기(Type Narrowing)'**이며, 이를 가능하게 하는 도구가 ..
- Total
- Today
- Yesterday
- 멀티모달
- HTML
- Javascript
- java
- SSR
- AI
- MSA
- on-device ai
- 카카오
- Rag
- 구글
- 엣지컴퓨팅
- TypeScript
- CSS
- 협력
- prompt engineering
- Nextjs
- 웹기초
- CSR
- 스마트안경
- react
- sLLM
- HBM
- LLM
- It용어
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |