동등
자바스크립트에서 조심해야 할 것중에 하나가 ==
와 ===
의 차이이다. 자바스크립트는 탄력적으로 프로그래밍 오류를 막기위한 시도를했다. ==
은 타입을 강제변환한다. 예를 들어 아래처럼 문자열과 숫자를 비교할 수 있을 것 같다면 스트링을 숫자로 변환하여 비교한다.
console.log(5 == "5"); // true , TS Error
console.log(5 === "5"); // false , TS Error
그러나 이 결정은 자바스크립트를 항상 이상적으로 만들지 못했다. 예를들어 아래와 같은 예제일때, 첫번째 구문은 ""
와 "0"
이 서로 문자열로써 다른값이기 떄문에 명확히 거짓이다. 하지만 두번째 경우 0
과 빈문자열 (""
)는 false가 나와야 할것 같지만 ==
으로 비교하면 true가 나온다. 두 구문을 모두 ===
로 비교하면 false가 나온다.
console.log("" == "0"); // false
console.log(0 == ""); // true
console.log("" === "0"); // false
console.log(0 === ""); // false
string == number
와string === number
는 둘다 타입스크립트에서 오류를 낸다. 그러니 이에 대한 걱정을 할 필요가 없다.
==
과 ===
처럼 !=
과 !==
의 경우도 비슷하다.
프로팁: null 체크를 제외하고는 항상 ===
과 !==
을 사용하자. 이에 대해서는 나중에 다뤄보려한다.