정적 타입 시스템의 필요성
개발자는 사용자에게 안정적인 서비스를 제공하기 위해 여러가지 방법을 사용한다.
정적 타입 시스템도 그 중 하나다.
타입 시스템
타입 시스템은 개발자가 정의한 타입을 기반으로 해당 타입을 언어와 연관시키는 메커니즘이다.
- 동등: 두 타입이 동일할 때 적용 (number:number)
- 호환: 두가지 타입이 정확히 일치하지 않더라도 어느정도 호환이 되는지를 나타내는 규칙(any: number)
- 추론: 타입이 정의되어 있지 않지만 주변 문맥에 따라 타입이 결정되는 규칙(a=3 일 때, a는 number)
모든 언어는 타입시스템이 존재하고 동적 타입과 정적 타입으로 나뉜다.
동적 타입과 정적 타입 차이
동적 타입
런타임에 모든 변수의 유형을 결정한다. 잘못된 경우 예외 발생시킨다.
ex) PHP, JS, Python
정적 타입
컴파일 타임에 모든 변수의 유형을 결정한다. 잘못된 경우 예외 발생시킨다.
ex) C, C++, Java
정적 타입 시스템의 필요성
타입을 명시하여 나중에 다른 개발자가 보더라도 어떤 매개변수를 넣고 이 함수가 어떤 값을 반환하는지 명시적으로 파악 가능
어떤 함수 또는 API에 대해 여러가지의 타입으로 이루어진 값이 발생될 수 있는데, 해당 값들에 대한 대처를 “미리” 할 수 있다.
매개변수 잘못입력하거나 등의 개발자 잔실수 줄여준다.