1️⃣ JavaScript만 사용하는 것과 비교해 TypeScript를 사용하는 이유에 대해 설명해 주세요.
`TypeScript`는 `JavaScript`의 상위 집합으로, `JavaScript`의 기능을 모두 포함하면서 추가적인 기능을 제공합니다. 이를 통해 `JavaScript`에서 발생할 수 있는 많은 문제를 해결하고, 대규모 애플리케이션 개발 시 많은 이점을 제공합니다.
JavaScript vs TypeScript
특징 | JavaScript | TypeScript |
타입 시스템 | 동적 타입 언어 | 정적 타입 언어 |
실행 방식 | 인터프리터 언어 | 컴파일 언어 |
독립성 | 독립적으로 사용 가능 | JS로 컴파일된 후 실행(JS 의존적) |
유연성 | 타입에 제한이 없음(더 유연) | 더 나은 구조, 간결함, 일관성, 재사용성 |
파일 확장자 | .js | .ts |
프로젝트 적합성 | 작은 프로젝트에 적합 | 복잡한 대형 프로젝트에 적합 |
TypeScript 사용 이유
1. 정적 타입 검사 (Static Type Checking)
`TypeScript`는 변수의 타입을 명시할 수 있어, 컴파일 시점에서 타입 오류를 미리 잡아낼 수 있습니다. 이는 `JavaScript`에서는 런타임에서만 확인할 수 있는 오류를 예방할 수 있으며, 대형 프로젝트에서 버그를 방지하는 데 유리합니다. 잘못된 데이터 타입을 전달했을 때 코드가 실행되지 않도록 오류를 발생시켜, 디버깅 시간을 절약할 수 있습니다.
let age: number = 25;
age = "25"; // 오류 발생
2. 개발 효율성 향상
`TypeScript`는 자동완성과 타입 추론을 제공하여, 코드 작성 시 실수를 줄이고 생산성을 높입니다. 코드가 명확하게 타입이 지정되어 있기 때문에, 다른 개발자도 쉽게 이해할 수 있으며, 코드 재사용성과 가독성을 높입니다.
3. 객체 지향 및 고급 기능 지원
`TypeScript`는 클래스, 인터페이스, 제네릭 등 객체 지향 프로그래밍 기능을 제공합니다. 이는 대규모 애플리케이션에서 복잡한 구조로 관리하고 확장하는 데 유리합니다.
interface Person {
name: string;
age: number;
}
const person: Person = { name: "Alice", age: 30 };
2️⃣ TypeScript의 동작 원리에 대해 설명해 주세요.
TypeScript는 JavaScript의 상위 집합으로서 추가적인 정적 타입 검사를 제공하며, 이를 통해 안정적이고 유지보수 가능한 코드를 작성할 수 있습니다.
1. 코드를 AST(Abstract Syntax Tree)로 변환
`TypeScript` 컴파일러는 작성된 `TypeScript` 코드를 파싱하여 AST(추상 문법 트리)로 변환합니다. AST는 코드 구조를 표현하는 트리 형태의 자료 구조로, 컴파일러가 코드의 문법과 구조를 분석하는 데 사용됩니다.
2. 타입 검사 (Type Checking)
AST가 생성된 후, `TypeScript`는 정적 타입 검사를 수행하여 코드가 타입 규칙을 위반하는지를 확인합니다. 예를 들어, 변수에 할당된 값이 타입 선언과 일치하지 않는 경우 에러가 발생합니다. 이 단계에서 에러가 발견되면 컴파일이 중단되며 에러 메시지를 통해 개발자가 문제를 해결할 수 있도록 안내합니다.
3. JavaScript 코드로 변환 (컴파일)
타입 검사에 성공하면 `TypeScript`는 AST 바탕으로 `JavaScript` 코드를 생성합니다. 이렇게 변환된 `JavaScript` 코드는 브라우저나 `Node.js` 환경에서 실행할 수 있습니다.
'Weekly Paper' 카테고리의 다른 글
[Weekly Paper] CORS 에러와 SEO에 대해서 (2) | 2024.11.25 |
---|---|
[Weekly Paper] Next.js 사용 이유 (3) | 2024.11.19 |
[Weekly Paper] React Life Cycle, 렌더링 방식 (CSR, SSR, SSG) (5) | 2024.10.15 |
[Weekly Paper] Virtual DOM이란? (1) | 2024.10.08 |
[Weekly Paper] 실행 컨텍스트(Exexution context)란? (2) | 2024.10.01 |