[TypeScript] 타입 가드 (Type Guard)
·
TypeScript
타입 가드 (Type Guard)  - 변수가 여러 개의 타입으로 지정되어 있을 때, 특정 조건을 기반으로 변수의 타입 범위를 좁히는 기법  - 코드 흐름에 따라 타입을 좁혀서 특정 타입에 대한 처리를 더 정확하게 할 수 있도록 함    # typeof 연산자  - 기본 자료형 확인     ex) string, number, boolean, object, ...function example(x: number | string) { if (typeof x === "string") { // 여기서 x는 string 타입으로 좁혀지며, string 타입 관련 함수가 자동완성됨 console.log(x.toUpperCase()); }}# instanceof 연산자  - 객체가 ..
[TypeScript] 타입 추론 (Type Inference) & 타입 단언 (Type Assertion)
·
TypeScript
타입 추론 (Type Inference)  - 코드에서 명시적으로 타입을 지정하지 않아도, 컴파일러가 타입을 자동으로 추론하는 기능 # Best Common Type  - 여러 타입의 값이 포함된 구조에서 가장 적절한 공통 타입을 추론하는 방식let mixedArray = [1, 2, "hello"]; // 변수를 (string | number)[] 타입으로 추론function getValue(condition: boolean) { return condition ? "hello" : 42; // 반환 타입을 (string | number) 타입으로 추론}# Contextual Typing  - 코드의 문맥을 기반으로 타입을 추론하는 방식// window.onmousedown에 할당된 함수라는 맥..
[TypeScript] 타입 별칭 (Type Alias)
·
TypeScript
타입 별칭 (Type Alias)  - 특정 타입/인터페이스 등을 참조할 수 있는 타입 변수  - 재선언 불가능type userName = string;type userName = number; // 에러 발생  - 활용     · 해당 타입이 어떤 역할을 하는지 이름을 짓고 싶을 때     · 여러 번 반복되는 타입을 변수화해서 쉽게 표기하고 싶을 때 # 선언하기// 기본 타입 별칭type UserName = string;// 객체 타입 별칭type User = {    name: string;    age: number;}// 유니언 타입 별칭type Message = string | number;type Status = "success" | "error" | "loading";// 제네릭 활용typ..
[TypeScript] 유니언 타입 & 인터섹션 타입
·
TypeScript
유니언 타입 (Union Type)  - 여러 개의 타입 중 하나를 가질 수 있도록 허용하는 타입  - `|` 기호를 사용하여 여러 타입을 결합함// string 또는 number 값만 할당할 수 있음let value: string | number;value = "hello"; value = 42; value = true; // 에러// string 또는 number 인자만 받을 수 있음function format(value: string | number) { ...} # 타입을 구분할 때 사용하는 연산자  1) in     - 객체에 해당 속성이 있으면 true, 아니면 false를 반환하는 연산자// person 객체에 'age'라는 속성이 존재하면 true, 아니면 false를 반환함..
[TypeScript] 인터페이스 (Interface)
·
TypeScript
인터페이스 (Interface)  - 객체의 구조를 정의하는 문법  - 객체의 형태를 사전에 정의함으로써, 예상치 못한 에러를 방지할 수 있음 # 객체 구조 정의interface Person { name: string; age?: number; // ?를 붙이면 옵션 속성이 됨}--------------------// 정상 작동const person: Person = { name: "John", age: 30};// gender 속성은 정의되어 있지 않기 때문에 에러 발생const person: Person = { name: "John", age: 30, gender: 'M'}; # 함수 파라미터 타입 정의interface Person { name: string..