TypeScript
에 대해서 하나씩 차근차근 배우면서 작성하는 글입니다.
전에 JavaScript
는 동적 타입 언어, TypeScirpt
는 정적 타입 언어라고 말씀드렸습니다.
그러면서 타입 선언이라는 기능도 간단하게 설명드렸습니다!
이번 시간에는 타입 선언, 타입 검사 그리고 타입 추론에 대해서 자세히 알아보는 시간을 가져보겠습니다.
우선 타입 선언은 코드에서 사용되는 변수, 함수, 객체 등의 타입을 정의하는 것입니다.
이를 통해 개발자가 의도한 타입을 명확하게 지정할 수 있고, 코드의 가독성이 향상됩니다.
타입 선언은 기본 타입, 사용자 정의 타입 (인터페이스, 타입 별칭, 열거형, 제네릭 등) 다양한 방법으로 이루어집니다.
사용자 타입은 추후에 다시 설명하는 시간을 가져보겠습니다! (저도 아직 배우지 않아서 😅)
기본 타입에는 boolean
, number
, string
등 JavaScript의 기본 타입과 tuple
, enum
, array
등 TypeScript에서 추가된 타입이 공존하고 있습니다.
const number01 = 1; // 타입 선언 X
const number02: number = 2; // 타입 선언 O
const arr01: string[] = ['a', 'b', 'c']; // 문자열 배열
const arr02: number[] = [1, 2, 3]; // 숫자형 배열
function sum(a: number, b: number): number { // 함수, 매개변수에도 타입 선언 O
return a + b;
}
console.log(sum(2, 3)); // 5
이렇게 TypeScirpt에서는 변수나 함수 매개변수에 명시적으로 타입을 지정할 수 있습니다.
앞서 설명한 타입 선언을 간단히 설명하면 변수, 함수, 객체 등의 타입을 지정하는 것입니다.
그렇다면 타입 검사는 어떤 것을 의미할까요?
타입 검사를 간단히 설명하면 타입 선언을 한 값과 실제값이 올바른지 확인하는 과정입니다.
따라서 타입 선언과 타입 검사는 함께 사용되어 TypeScript의 핵심 기능을 이루며, 코드의 안정성과 가독성을 높이는 역할을 합니다. 이러한 이유로 하나의 세트로 생각해도 무방합니다.
타입 검사 안에는 정적 타입 검사와 타입 추론 등의 여러 가지 기능을 포함합니다.
정적 타입 검사(Static Type Checking)
는 코드가 실행되기 전에 컴파일 타임에 수행되는 타입 검사입니다.
정적 타입 검사를 통해 프로그램에서 잘못된 타입 사용, 반환 값의 타입 불일치 등의 오류를 사전에 찾아낼 수 있습니다. 이를 통해 프로그램의 안정성이 향상되고, 런타임 오류를 줄일 수 있습니다.
타입스크립트는 정적 타입 검사를 위해 타입 선언을 사용합니다. 개발자가 변수, 함수, 객체 등에 명시적으로 타입을 선언하면, 타입스크립트 컴파일러는 코드를 컴파일하는 과정에서 이러한 타입 선언을 기반으로 타입 검사를 수행합니다.
예를 들어, 다음과 같은 함수에서 정적 타입 검사가 이루어집니다.
function add(a: number, b: number): number {
return a + b;
}
const result: number = add(1, 2); // 올바른 타입 사용
const wrongResult: string = add(1, 2); // 타입 오류: 반환 값의 타입이 string이 아닌 number입니다.
위 예제에서 타입스크립트 컴파일러는 add
함수의 매개변수와 반환 값의 타입이 올바른지 확인합니다. 만약 잘못된 타입을 사용하면, 컴파일 과정에서 오류가 발생합니다.
타입 추론(Type Inference)
은 타입스크립트 컴파일러가 코드를 분석하여 암시적으로 변수, 함수, 객체 등의 타입을 결정하는 과정입니다.
타입 추론을 통해 개발자가 명시적으로 타입을 선언하지 않아도, 컴파일러가 적절한 타입을 자동으로 찾아줍니다. 이를 통해 코드의 간결성과 가독성이 향상됩니다.
타입 추론은 주로 다음과 같은 상황에서 이루어집니다.
let num = 42; // 타입 추론에 의해 num의 타입은 number로 결정됩니다.
function add(a: number, b: number) {
return a + b; // 타입 추론에 의해 반환 값의 타입은 number로 결정됩니다.
}
타입 추론은 타입스크립트를 사용하는 데 있어 매우 유용한 기능이지만, 경우에 따라 명시적인 타입 선언이 더 나은 가독성과 안정성을 제공할 수 있습니다. 따라서 상황에 맞게 타입 추론과 명시적 타입 선언을 적절히 활용하는 것이 좋습니다!