정적 타입
일반 언어의 특징 도입 ( Java, C# )
타입 스크립트 문법 -> tsc (트랜스파일) -> JS 변환 -> 실행
ts 파일에서 js 변환시에 파일 체크 -> 이상 존재하면 JS로 변환되지 않음
| 비교 항목 | any 타입 | unknown 타입 |
|---|---|---|
| 값의 할당 | 모든 타입의 값을 대입할 수 있음 | 모든 타입의 값을 대입할 수 있음 |
| 속성 및 메서드 접근 | 타입 검사 없이 즉시 접근 가능 | 타입 좁히기 전에는 접근 불가능 (컴파일 에러) |
| 안전성 수준 | 낮음 (자바스크립트와 동일하게 오류 위험 노출) | 높음 (컴파일러가 사전 검증을 강제함) |
any 사용 시의 문제점
any를 사용하면 타입스크립트의 정적 분석 기능이 무력화되므로, 오타나 잘못된 메서드 호출을 컴파일 시점에 잡아낼 수 없습니다. 따라서 정체를 알 수 없는 데이터는 우선 unknown으로 선언한 뒤 타입 좁히기를 통해 안전하게 구체적인 타입을 찾아내는 것이 올바른 설계 방향입니다.
(매개변수: 타입) => 반환타입을 작성하는 문법
{}) 내부에 (매개변수: 타입): 반환타입; 형태로 함수의 구조를 정의하는 문법=>) 대신 콜론(:)을 사용하며, 함수의 형태를 객체의 속성처럼 상세히 묘사할 때 활용


| 구분 (기능 및 특징) | 인터페이스 (interface) | 타입 별칭 (type alias) |
|---|---|---|
| 객체(object) 구조 정의 | ✅ 가능 | ✅ 가능 |
| 객체 구조 확장 (extends) | ✅ extends 사용 | ✅ 인터섹션(&) 사용 |
| 클래스 구현 (implements) | ✅ 가능 | ✅ 가능 |
| 선언 병합 (Declaration Merging) | ✅ 가능 | ❌ 불가능 |
| 복합 타입 정의 (유니온 / 인터섹션) | ❌ 불가능 | ✅ \|, &로 가능 |
| 함수(function) 타입 정의 | ❌ 불가능 | ✅ 가능 |
| 객체 이외의 다양한 타입 표현 (원시값 등) | ❌ 불가능 | ✅ 가능 |
| typeof 연산자를 활용한 타입 추출 | ❌ 불가능 | ✅ 가능 |


