정적타입 언어 vs 동적타입 언어

ansunny1170·2022년 5월 26일
0

Typescript 자습

목록 보기
3/3

변수의 타입이란 자료형을 뜻한다.

# 정적타입 언어란?


정적타입 언어(Statically typed language)는 컴파일 시 변수의 타입이 결정되는 언어.
즉, 프로그래머가 변수에 들어갈 값의 형태에 따라 직접 변수의 타입을 명시해줘야 한다.

let str : string = 'tuna'
let num : number = 123
let bool: boolean = true

const array = [] // 이렇게 설정하면 any[]가 된다.

const array : string[] = []
const array1 : number[] = []
const array2 : boolean[] = []
// array.push(1) 에러 발생 string에 num을 넣음
// array.push("1") 정상 작동

컴파일 시에 자료형에 맞지 않는 값이 들어있으면 컴파일 에러가 발생한다.

  • 정적타입 언어: TypeScript, JAVA, C, C++, C#, Scala, Fortran, Haskell, ML, Pascal 등이 있다.

  • 장점: 타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입의 안정성이 높음, 컴파일 시에 미리 타입을 결정하기 때문에 실행속도가 빠름

  • 단점: 매번 코드 작성 시 변수형을 결정해줘야 하는 번거로움이 있음.

# 동적타입 언어란?


동적타입 언어(Dynamically typed languaes)는 컴파일 시 자료형을 정하는 것이 아니라 런타임 시 결정된다.
다음과 같이 타입 없이 변수만 선언하여 값을 지정할 수 있다.

let num = 123
const string = '하나둘셋'
  • 동적타입 언어: JavaScript, Python, Grrovy, Ruby, Smalltalk, Lisp, Objective-C, PHP, Prolog 등이 있다.

  • 장점: 런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 유연성이 높음
    컴파일 시 타입을 명시해주지 않아도 되기 때문에 빠르게 코드를 작성할 수 있음

  • 단점: 실행 도중에 변수에 예상치 못한 타입이 들어와 타입에러가 발생할 수 있음

동적타입 언어는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워 진다.
이러하나 불편함을 해소하기 위해 TypeScript나 Flow등을 사용할 수 있다.

profile
공정 설비 개발/연구원에서 웹 서비스 개발자로 경력 이전하였습니다. Node.js 백엔드 기반 풀스택 개발자를 목표로 하고 있습니다.

0개의 댓글