TypeScript

agnusdei·2023년 7월 5일
0
post-custom-banner

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 함수의 매개변수 namestring 타입을 명시하였습니다. 따라서 문자열을 전달하면 정상적으로 동작하지만, 숫자를 전달하면 컴파일 오류가 발생합니다.

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 인터페이스는 nameage라는 속성을 정의합니다. getPersonInfo 함수는 Person 타입의 매개변수를 받아 해당 정보를 문자열로 반환합니다. alice 객체는 nameage 속성을 가지므로 정상적으로 동작하지만, 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 환경에서 사용할 수 있습니다.

post-custom-banner

0개의 댓글