JavaScript 기본 | 값 | 타입 시스템

Faithful Dev·2025년 5월 20일
0

프리스쿨

목록 보기
20/25

자바스크립트는 동적 타입(dynamically typed) 언어이다. 즉, 변수에 어떤 타입의 값이든 할당할 수 있고, 실행 중에 타입이 바뀔 수도 있다. 정적 타입 언어(Java, TypeScript 등)와 달리, 컴파일 타임에 타입 검사가 이뤄지지 않는다.
다음은 자바스크립트의 타입 시스템의 주요 특징이다:


원시 타입 (Primitive Types)

자바스크립트의 기본 데이터 타입은 다음과 같다:

타입예시
string"hello", 'world'
number1, 3.14, -42
booleantrue, false
nullnull
undefined변수 선언 후 초기화 안 된 상태
bigint123456789012345678901234567890n
symbolSymbol('id')

참조 타입 (Reference Types)

  • 객체(Object)
  • 배열(Array)
  • 함수(Function)
  • 날짜(Date) 등등
let obj = { name: 'John' };
let arr = [1, 2, 3];
let fn = function() { return 'Hello'; };

동적 타입 지정

변수는 어떤 타입이든 가질 수 있으며, 재할당을 통해 타입이 바뀔 수 있다:

let x = 10; // number
x = 'hello'; // 이제 string
x = true; // 이제 boolean

암시적 타입 변환 (Type Coercion)

자바스크립트는 상황에 따라 자동으로 타입을 변환한다:

'5' + 1 // '51' (문자열로 변환)
'5' - 1 // 4 (숫자로 변환)
true + 1 // 2 (true → 1)
false + '1' // 'false1'

이런 특징 때문에 버그 발생 가능성이 높고, 유지보수 시 주의가 필요하다.


타입 검사 방법

런타임에 타입을 확인하려면 typeof 연산자를 사용한다:

typeof 42 // 'number'
typeof 'hello' // 'string'
typeof null // 'object' ← 이건 자바스크립트의 오래된 버그
type of [] // 'object'
type of {} // 'object'
typeof function(){} // 'function'

엄격한 타입을 원한다면? → TypeScript

자바스크립트의 유연하지만 위험한 타입 시스템을 보완하기 위해 TypeScript가 등장했다.
TypeScript는 정적 타입 검사, 인터페이스, 제네릭 등을 제공해 대규모 애플리케이션 개발에 더 적합하다.


요약

특징설명
동적 타입변수에 어떤 타입이든 저장 가능
타입 추론 없음런타임에 타입 결정
타입 안전성 낮음실수로 타입 바꿔도 에러 없음
타입스크립트 권장정적 타입 검사를 원한다면
profile
Turning Vision into Reality.

0개의 댓글