연구노트/자바스크립트

타입 시스템

생존형수동개발자 2024. 8. 9. 21:56

동적/정적(static/dynamic) 타입

프로그래밍 언어에서 변수를 어떻게 다루냐에따라 static 타입과 dynamic 타입으로 나뉜다.

Static type(정적 타입)

  • 예시 언어: Java, C, C++, TypeScript, Swift...
  • 변수가 선언될 때 타입이 결정됨
let age: number = 25;
age = "twenty-five"; //string 타입ㅁ 할당 안되

장점

  • 컴파일에서 오류를 잡을수 있기에 안정성 증가
  • 코드에디터에서 자동완성이나 오류 검사 가능

단점

  • 코드의 유연성 감소
  • 변수 사용전 타입 명시 필요

Dynamic type(동적 타입)

  • 예시 언어: JavaScript, Python, Ruby, PHP...
  • 변수가 할당될 때 타입이 결정(runtime 중 변경될수 있음)
let age = 25;
age = "twenty-five"; // string 타입 할당 가능

장점

  • 코드가 유연해지고 간단해짐
  • 고민할 필요가 없으므로 빠른 개발가능

단점

  • 런타임중 오류발생 가능
  • 가독성 감사
  • 코드 에디터에서 자동완성이나 오류 검사 기능이 약함

 

강/약 (Strong/Weak) 타입

Strong type

  • 데이터 타입이 강제로 지정되어 있음, 타입간의 변환이나 연산이 엄격하게 제한
  • 연산하려면 타입을 명시적으로 변환해야한다.

Weak type

  • 타입간의 변환이 자동으로 이루어지거나 느슨하게 적용
  • 연산시 자동으로 타입변경하여 연산처리