본문 바로가기
Dev/TypeScript

TypeScript : Type Inference & Variable Declaration

by ZEROGOON 2024. 10. 3.

타입 추론(Type Inference)이란?

타입 추론이란 프로그래머가 변수의 타입을 명시적으로 지정하지 않아도 컴파일러가 변수에 할당된 값을 보고 스스로 타입을 추론하는 기능입니다. 즉, 코드를 작성할 때 변수 앞에 let, const 등의 키워드와 함께 타입을 명시하지 않아도 컴파일러가 변수에 처음 할당된 값을 보고 어떤 타입인지 판단하여 자동으로 타입을 지정해주는 것을 말합니다.

왜 타입 추론이 필요할까요?

  • 코드 간결화: 타입을 명시적으로 지정하지 않아도 되므로 코드를 더 간결하게 작성할 수 있습니다.
  • 개발 생산성 향상: 반복적인 타입 선언을 줄여 개발 속도를 향상시킬 수 있습니다.
  • 오류 감소: 컴파일러가 타입을 자동으로 추론하기 때문에 타입 오류를 줄일 수 있습니다.

TypeScript에서의 타입 추론 예시

let message = "Hello, TypeScript!"; // message 변수는 문자열 타입으로 추론
let count = 42; // count 변수는 숫자 타입으로 추론
let isDone = false; // isDone 변수는 불리언 타입으로 추론

let list = [1, 2, 3]; // list 변수는 숫자 타입의 배열로 추론

let x; // x 변수는 any 타입으로 추론 (타입이 명확하지 않을 때)
x = "hello";
x = 10;

위 예시에서 볼 수 있듯이, 변수에 처음 할당된 값에 따라 컴파일러가 자동으로 타입을 추론합니다.

더 복잡한 예시: 함수

function greet(name) {
    console.log("Hello, " + name);
}

greet("Bob"); // name 매개변수는 문자열 타입으로 추론

함수의 매개변수와 반환값의 타입도 마찬가지로 추론됩니다. greet 함수의 name 매개변수는 greet("Bob")에서 문자열이 전달되었으므로 문자열 타입으로 추론됩니다.

TypeScript의 타입 추론 규칙

  • 첫 번째 할당값: 변수에 처음 할당된 값이 타입을 결정합니다.
  • 컨텍스트: 주변 코드의 컨텍스트에 따라 타입이 추론될 수 있습니다. 예를 들어, 배열에 숫자만 추가하면 해당 배열의 타입은 숫자 배열로 추론됩니다.
  • 타입 가드: typeof, instanceof 등의 연산자를 사용하여 타입을 확인하고 분기할 수 있습니다.

TypeScript 타입 추론의 장점

  • 자동 완성: IDE에서 변수의 타입을 알고 있으므로 자동 완성 기능을 사용하여 더 빠르게 코드를 작성할 수 있습니다.
  • 리팩토링: 코드를 리팩토링할 때 타입 정보를 기반으로 안전하게 변경할 수 있습니다.
  • 오류 감지: 컴파일 시점에 타입 오류를 미리 감지하여 버그를 줄일 수 있습니다.

결론

TypeScript의 타입 추론은 개발 생산성을 향상시키고 코드의 품질을 높이는 데 큰 도움이 됩니다. 하지만 모든 상황에서 완벽하게 타입을 추론할 수 있는 것은 아니므로, 필요한 경우 명시적으로 타입을 지정해야 합니다.

변수 선언 (Variable Declaration)이란?

변수 선언은 프로그램에서 사용할 변수를 미리 정의하는 과정입니다. 변수는 데이터를 저장하기 위한 메모리 공간의 이름이라고 생각하면 됩니다. 변수를 선언할 때는 변수의 이름과 자료형을 지정해야 합니다.

왜 변수를 선언해야 할까요?

  • 데이터 저장: 프로그램 실행 중에 계산된 값이나 입력받은 값을 저장하기 위해 변수를 사용합니다.
  • 데이터 참조: 변수에 저장된 값을 다른 연산이나 조건문에서 참조하여 사용합니다.
  • 코드 가독성 향상: 의미 있는 변수 이름을 사용하여 코드의 가독성을 높일 수 있습니다.

변수 선언의 일반적인 형식

자료형 변수이름;
  • 자료형: 변수에 저장될 데이터의 종류를 나타냅니다. (예: int, float, double, char, string 등)
  • 변수이름: 변수를 식별하기 위한 고유한 이름입니다.

예시 (C언어)

int age;  // 정수형 변수 age 선언
float height; // 실수형 변수 height 선언
char grade; // 문자형 변수 grade 선언

다양한 프로그래밍 언어에서의 변수 선언

  • C++: C언어와 유사한 형식으로 변수를 선언합니다.
  • Java: 자료형 변수이름; 형식으로 선언합니다.
  • Python: 자료형을 생략하고 변수이름 = 값; 형식으로 선언할 수 있습니다. (동적 타이핑)
  • JavaScript: var, let, const 키워드를 사용하여 변수를 선언하며, 자료형을 생략할 수 있습니다. (동적 타이핑)

변수 초기화 변수를 선언할 때 초기값을 할당하는 것을 변수 초기화라고 합니다. 초기화하지 않은 변수를 사용하면 예상치 못한 결과가 발생할 수 있으므로, 변수를 선언할 때 항상 초기화하는 것이 좋습니다.

int age = 20;  // age 변수를 선언하고 20으로 초기화

변수 범위 변수는 선언된 위치에 따라 유효 범위가 다릅니다.

  • 전역 변수: 프로그램 전체에서 사용할 수 있는 변수입니다.
  • 지역 변수: 특정 함수나 블록 내에서만 사용할 수 있는 변수입니다.

변수 이름 규칙

  • 영문자, 숫자, 언더바(_)만 사용할 수 있습니다.
  • 숫자로 시작할 수 없습니다.
  • 예약어는 사용할 수 없습니다.
  • 의미 있는 이름을 사용하여 코드 가독성을 높입니다.

주의사항

  • 동일한 범위 내에서 동일한 이름의 변수를 중복해서 선언할 수 없습니다.
  • 변수를 선언한 후에는 값을 변경할 수 있습니다.

예시 (JavaScript)

let name = "Alice"; // let 키워드를 사용하여 변수 선언
const PI = 3.14159; // const 키워드를 사용하여 상수 선언 (값 변경 불가)

결론 변수 선언은 프로그래밍의 기본 개념입니다. 변수를 효과적으로 사용하기 위해서는 자료형, 변수 범위, 초기화 등에 대한 이해가 필요합니다.