01. 🟦 타입스크립트 기본 정리
📌 1. 타입 주석 (Type Annotation)
- 변수에 : 기호를 사용해 타입을 붙이는 것을 **타입 주석(Type Annotation)**이라고 합니다.
- any는 모든 타입을 허용하지만, 타입 안정성을 해치기 때문에 사용 지양합니다.
const a: number = 6;
const b: string = "5";
const c: boolean = false;
const d: undefined = undefined;
const e: null = null;
const f: any = true; // ❌ 명시적 any는 지양
// 고정된 상수 타입
// 값 자체를 타입으로 지정하면 오직 해당 값만 할당 가능하게 됩니다
// **리터럴 타입(Literal Type)**이라고 하며, 주로 상수나 고정된 값을 의도할 때 사용합니다.
const g: true = true;
const h: 5 = 5;
📌 2. 함수의 타입 지정
- 방식 1. 타입 별칭(Type Alias)
- Add라는 함수 타입을 만들어 재사용할 수 있습니다.
- 코드 재사용성과 가독성 모두 향상됩니다.
type Add = (x: number, y: number) => number;
const add: Add = (x, y) => x + y;
- 방식 2. 직접 함수 타입 명시
- 변수에 직접 함수 타입을 작성하는 방식입니다.
- 코드가 짧거나 1회성 함수에 자주 사용됩니다.
const add2: (x: number, y: number) => number = (x, y) => x + y;
- 방식 3: 인터페이스 (Interface) 활용 -> 사용도 적음
- 함수 타입도 interface로 표현할 수 있으며, 구조적인 설계나 객체지향 설계에 유리합니다.
- 객체 안에 함수 타입을 여러 개 포함시킬 수도 있습니다.
interface Add3 {
(x: number, y: number): number;
}
const add3: Add3 = (x, y) => x + y;
📌 3. 배열과 튜플
// 문자열 배열
const arr: string[] = ["123", "456"];
// 제네릭 형식
const arr2: Array<number> = [123, 456];
// 튜플 : 순서와 타입이 중요할 때 사용합니다.
const arr3: [number, number, string] = [123, 456, "hello"];
// ❌ 튜플 에러 발생
const arr4: [number, number, string] = [123, 456, "hello", "wow"];
📌4. 객체 타입 지정
- 객체의 속성마다 타입을 지정할 수 있습니다.
- lat과 lon은 반드시 number여야 하며, 누락되거나 다른 타입이면 오류가 납니다.
const obj: { lat: number; lon: number } = { lat: 123, lon: 5.3 };
📌5. 타입 추론 (Type Inference)
- 타입스크립트는 대부분의 경우 타입을 자동으로 추론합니다.
- tempAdd 함수의 리턴값은 number로 추론되고, result도 자동으로 number 타입이 됩니다.
function tempAdd(x: number, y: number) {
return x + y;
}
const result = tempAdd(1, 2);
- 함수 오버로딩(Overloading) 예시
- 선언부와 구현부를 분리해 여러 인자 타입을 지정할 수 있습니다.
- 가능한 경우 타입 추론에 맡기고, 매개변수에는 명시적 타입을 부여하는 것이 안전합니다.
function tempAddJS(x: number, y: number): number;
function tempAddJS(x, y) {
return x + y;
}
📌 6. 타입 단언 (Type Assertion)
- 타입스크립트에게 “이 값은 number처럼 취급해줘”라고 강제로 알려주는 방식입니다.
- as unknown을 먼저 거치면 어떤 값도 어떤 타입으로도 변환 가능합니다.
- ⚠️ 오용 시 타입 안정성이 깨지므로 주의 필요
let bb = "hello" as unknown as number;
📌 7. 타입 안정성 (Type Safety)
- 타입스크립트는 변수에 처음 설정된 타입을 기준으로 다른 타입을 막아줍니다.
- 이는 코드 안정성을 높여주며, 런타임 에러를 컴파일 타임에 방지할 수 있습니다.
let cc = 123;
cc = "123"; // ❌ 오류: number 타입에 string 대입 불가
항목 | 설명 |
---|---|
변수 타입 지정 | :타입 형태로 변수에 타입 지정 가능 |
함수 타입 선언 | (x: 타입, y: 타입) => 리턴타입 형태로 명시 |
배열과 튜플 | 배열은 타입[] , 튜플은 [타입1, 타입2, ...] |
객체 타입 | 속성마다 타입을 정밀하게 지정 가능 |
타입 추론 | 타입스크립트가 자동으로 타입을 유추 |
타입 단언 | as 타입 문법으로 강제 지정 가능 |
타입 안정성 | 타입스크립트는 타입 불일치 대입을 막음 |
Last updated on