strict mode란?
strict mode는 ES5(ECMA Script 5)에 추가된 키워드입니다.
출현 배경으로, 자바스크립트는 꽤나 긴 시간동안 호환성 이슈없이 새로운 기능이 추가되며 발전해왔습니다. 하지만 자바스크립트 창시자들이 했던 실수나 불완전한 결과물이 언어에 묻혀있었습니다.
ES5(ECMA Script 5)가 등장하며 새롭게 개정되고 기능이 추가되었습니다. 그렇지만 하위 호환성 문제가 생길 수 있기 때문에, ES5는 기본 모드에서는 동작하지 않도록 설계되었습니다.
strict mode를 활성화시에만 동작하며, 그동안 자바스크립트가 묵인했던 불완전한 코드들의 에러 메세지를 발생시켰습니다.
// 'use strict';
function test() {
x = 10;
}
test();
console.log(x); // 10
엄격 모드를 사용하지 않았을 때, 출력 10이 된다. 변수를 선언하지 않았지만, 코드 에러가 분명한 상황에도 이를 묵인하고 정상적인 코드와 같이 동작하는 것을 볼 수 있다.
'use strict';
function test() {
x = 10;
}
test();
console.log(x); // ReferenceError: x is not defined
엄격 모드를 사용하였을 때, x가 정의되지 않았다는 에러를 확인할 수 있다. 이렇게 코드를 엄격하게 검사하게 되어, 사전에 잘못된 개발 방향을 방지할 수 있다.
TypeScript
타입스크립트는 태생적 한계가 있는 자바스크립트를 극복하고자 대체 언어로 탄생했다.
클래스 기반 객체지향 언어(Java, C++, C# 등)와 같이 정적 타이핑을 지원하며, ES6(ECMAScript 2015)의 클래스, 모듈 등과 ES7의 Decorator 등을 지원한다.
이로써 디버그와 테스트 공수가 증가하는 등의 여러 문제들을 줄일 수 있게 되었다.
장점
장점으로 변수를 선언과 함수의 매개변수 타입을 지정함으로써 에러를 방지한다.
let num: number = 123; // number type define
let str: string = "123"; // string type define
let bool: boolean = true; // boolean type define
//매개변수 type define
function sum(a: number, b: number) {
return a + b;
}
sum('x', 'y');
// error TS2345: Argument of type '"x"' is not assignable to parameter of type 'number'.
'프론트엔드 개발[Front-End Development] > JavaScript' 카테고리의 다른 글
[JavaScript] 타입 체크의 필요성 (0) | 2022.11.20 |
---|---|
[JavaScript] 날짜와 시간을 어떻게 구해야 할까? (0) | 2022.11.13 |