TypeScript
에 대해서 하나씩 차근차근 배우면서 작성하는 글입니다.
TypeScript는 JavaScript의 슈퍼셋으로, JavaScript의 기능을 포함하면서도 정적 타입 시스템을 추가한 프로그래밍 언어입니다.
TypeScript의 타입 시스템은 코드의 안정성과 가독성을 높이고, 오류를 런타임 이전에 발견할 수 있게 해주는 큰 이점을 제공합니다.
이번 시간에는 TypeScript와 JavaScript의 차이점을 살펴보며 TypeScript의 타입 시스템이 어떤 이점이 있는지 알아보겠습니다!
JavaScript
는 동적 타입 언어로, 변수의 타입이 실행 시간에 결정됩니다. 이로 인해 코드 작성이 더 쉽고 유연하게 할 수 있지만, 런타임 오류의 위험이 증가합니다.
let value = 42; // number
value = "hello"; // string
위에 예시 코드처럼 JavaScript
의 타입은 유연한 변수 사용이 가능하다는 점이 장점도 있지만 단점도 있습니다!
TypeScript
는 정적 타입 시스템을 도입하여 변수의 타입이 컴파일 시간에 결정됩니다. 이를 통해 개발자는 코드의 안정성과 가독성을 높이며, 런타임 이전에 대부분의 오류를 잡을 수 있습니다.
let value: number = 42;
value = "hello"; // Error: Type '"hello"' is not assignable to type 'number'.
위에 예시 코드처럼 TypeScript
는 타입 선언이라는 시스템을 사용하여서 개발자가 의도하지 않은 타입의 값이 할당되거나 함수에 전달되는 것을 방지할 수 있습니다.
TypeScript의 기본 타입은 JavaScript의 기본 타입을 기반으로 하되, 몇 가지 추가된 타입을 포함하고 있습니다.
TypeScript는 JavaScript의 슈퍼셋이기 때문에, JavaScript의 기본 타입을 그대로 사용할 수 있습니다.
number
: 숫자 값을 나타내는 타입 (정수, 실수 등)string
: 문자열 값을 나타내는 타입boolean
: 참(true) 또는 거짓(false) 값을 나타내는 논리 타입object
: 원시 타입이 아닌 모든 타입을 나타내는 타입null
: 값이 없음을 나타내는 타입undefined
: 값이 정의되지 않았음을 나타내는 타입array
: 동일한 타입의 요소를 저장하는 배열 타입tuple
: 서로 다른 타입의 요소를 저장하는 고정된 길이의 배열 타입enum
: 명명된 상수의 집합을 정의하는 타입any
: 어떤 타입이든 허용하는 타입 (타입 검사를 무시하고 싶은 경우에 사용)void
: 값이 없음을 나타내는 타입 (주로 함수에서 반환 값이 없는 경우 사용)이처럼 TypeScript는 JavaScript의 기본 타입을 확장하여, 개발자가 더 명시적으로 타입을 정의하고 사용할 수 있게 해줍니다. 이를 통해 코드의 안정성과 가독성이 향상됩니다.