정적 타이핑

ujin·2022년 11월 20일
0

TypeScript

목록 보기
3/5

C나 Java 같은 언어는 변수를 선언할 때 변수에 할당한 값의 타입에 따라 사전에 타입을 명시적으로 선언하여야 하며 선언한 타입에 맞는 값을 할당해야 한다. 이를 정적 타이핑이라 한다.

자바스크립트는 동적 타입 혹은 느슨한 타입 언어이다. 이것은 변수의 타입 선언 없이 값이 할당되는 과정에서 동적으로 타입을 추론한다는 의미이다. 동적 타입 언어는 타입 추론에 의해 변수의 타입이 결정된 후에도 같은 변수에 여러 타입의 값을 교차하여 할당할 수 있다. 이를 동적 타이핑이라 한다.

var foo;

console.log(type of foo); // undefined

foo = null;
console.log(type of foo); // object

foo = {}
console.log(type of foo); // object

foo = 3;
console.log(type of foo); // number

foo = 3.14;
console.log(type of foo); // number

foo = 'hello';
console.log(type of foo); / string

 foo = true;
console.log(type of foo); // booloean

TypeScript는 정적 타이핑을 지원한다. 정적 타입 언어는 타입을 명시적으로 선언하며, 타입이 결정된 후에는 타입을 변경할 수 없다. 잘못된 타입의 값이 할당 또는 반환되면 컴파일러는 이를 감지해 에러를 발생시킨다.

let foo: string, // 문자열 타입
		bar: number, // 숫자 타입
		baz: boolean; // 불리언 타입

foo = 'hello';
bar = 123;
baz = 'true'; // error: Type 'true' is not assignable to type 'boolean'.

정적 타이핑 변수는 물론 함수의 매개변수와 반환값에도 사용할 수 있다.

function add(a: number, b: number): number {
    return a + b;
}

console.log(add(10, 10)); //20
console.log(add('10', '10')); // Argument of type 'string' is not assignable to parameter of type 'number'.

정적 타이핑과 동적 타이핑의 가장 큰 차이를 컴파일 시의 에러 검출과 런타임 시의 에러 검출로 볼 수 있는데

Java 와 같은 정적 타이핑 언어도 런타임에만 검출되는 에러가 존재하기 때문이다.

정적 타이핑의 장점은 코드 가독성, 예측성, 안정성의 향상 이라고 볼 수 있는데 이는 대규모 프로젝트에 매우 적합하다.

profile
개발공부일기

0개의 댓글