TypeScript는 Microsoft에서 개발한 오픈 소스 프로그래밍 언어로, JavaScript에 정적 타입 기능을 추가한 언어입니다. TypeScript는 JavaScript의 상위 집합이며, JavaScript 코드와 호환되므로 JavaScript 개발자들이 쉽게 학습하고 사용할 수 있습니다. 아래에서 TypeScript의 주요 기능과 장점, 그리고 코드 예시를 제공하겠습니다.
1. 정적 타입:
TypeScript는 변수, 함수, 객체 등에 명시적인 타입을 지정할 수 있는 정적 타입을 제공합니다. 이는 컴파일러에게 코드의 타입 오류를 검출하고, 타입 안정성을 높여줍니다. 타입 지정은 개발자의 실수를 방지하고 코드의 가독성을 향상시키는 데 도움을 줍니다.
function greet(name: string): void {
console.log(`Hello, ${name}!`);
}
greet("Alice");
// 출력: Hello, Alice!
greet(123); // 컴파일 오류: Argument of type 'number' is not assignable to parameter of type 'string'.
위의 예시에서 greet
함수의 매개변수 name
에 string
타입을 명시하였습니다. 따라서 문자열을 전달하면 정상적으로 동작하지만, 숫자를 전달하면 컴파일 오류가 발생합니다.
2. 인터페이스와 타입 추론:
TypeScript는 인터페이스를 사용하여 객체의 구조와 타입을 정의할 수 있습니다. 이를 통해 코드의 가독성을 높이고 재사용성을 증가시킬 수 있습니다. 또한, TypeScript는 변수나 함수의 타입을 추론하여 암묵적으로 타입을 할당할 수 있습니다.
interface Person {
name: string;
age: number;
}
function getPersonInfo(person: Person): string {
return `Name: ${person.name}, Age: ${person.age}`;
}
const alice = { name: "Alice", age: 25 };
console.log(getPersonInfo(alice));
// 출력: Name: Alice, Age: 25
const bob = { name: "Bob" }; // 컴파일 오류: Property 'age' is missing in type '{ name: string; }' but required in type 'Person'.
위의 예시에서 Person
인터페이스는 name
과 age
라는 속성을 정의합니다. getPersonInfo
함수는 Person
타입의 매개변수를 받아 해당 정보를 문자열로 반환합니다. alice
객체는 name
과 age
속성을 가지므로 정상적으로 동작하지만, bob
객체는 age
속성이 없으므로 컴파일 오류가 발생합니다.
3. 클래스와 상속:
TypeScript는 클래스 기반 객체 지
향 프로그래밍을 지원합니다. 클래스를 사용하여 객체를 생성하고 메서드와 속성을 정의할 수 있으며, 상속과 다형성 등 객체 지향 프로그래밍의 핵심 개념을 활용할 수 있습니다.
class Animal {
constructor(private name: string) {}
speak(): void {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name);
}
speak(): void {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog("Buddy");
dog.speak();
// 출력: Buddy barks.
위의 예시에서 Animal
클래스는 name
속성과 speak
메서드를 가지고 있습니다. Dog
클래스는 Animal
클래스를 상속받고, speak
메서드를 재정의하여 강아지의 소리를 출력합니다.
TypeScript는 이 외에도 모듈 시스템, 제네릭, 데코레이터 등 다양한 기능을 제공합니다. 이를 통해 더욱 안정적이고 확장 가능한 JavaScript 코드를 작성할 수 있습니다. TypeScript는 컴파일러를 통해 JavaScript로 변환되므로, 대부분의 JavaScript 환경에서 사용할 수 있습니다.