20240624 38일차

그동안 쭉 무리없이 잘 써왔던 자바스크립트가 한계점이 있었다. 과연 무엇일까?
자바스크립트는 동적타입 언어이다. 동적타입 언어는 정적타입 언어보다 간결하고 유연한 코드를 작성할 수 있다.
예시로, 10 - '1' 이라고 계산할 때 자동으로 string열을 number형으로 바꿔서 계산해주는 것처럼 말이다.
이러한 장점에 따른 단점도 존재한다. 이런 방식 때문에 런타임 시에 변수의 타입(형)이 결정되기 때문에 타입 관련 오류를 잡기 힘들다는 단점이 있다.
let message = "hello";
message = 42; // 형이 달라짐. 코드 작성 시에는 문제가 없지만 런타임 시에 오류 발생
위처럼 이러한 단점으로 인해 변수의 타입이 명시되지 않으면 코드의 가독성이 떨어지고, 프로젝트가 커지거나 협업할 때 문제가 될 수 있다고 한다.
여기서 의문점이 생긴다. 자바스크립트로만 코드를 작성해왔다면, 변수의 타입을 개발 공부를 하면서부터 명시하지 않아 왔고, 큰 프로젝트도 하지 않았다면 무엇이 불편한지 모를 것이다. 내가 그렇다 ㅋㅋㅋ
하지만 앞으로 현업에서 정말 큰 프로젝트를 진행한다면 복잡성이 증가해 변수의 타입을 오해해 치명적인 오류가 일어날 수 있다. 더군다나 자바스크립트 같이 런타임 시에만 오류를 알 수 있다면. 그래서 타입 스크립트가 실무에선 불가결인 이유가 이 때문이지 않을까 싶다.
런타임 (Runtime), 컴파일타임 (Compiletime)
런타임이란 말그대로 코드가 실행되고 동작이 이루어지는 시점이라는 뜻이다.
컴파일 타임은 코드가 실행되기 전, 컴파일러에 의해 번역되는 시점을 말한다.
위에서 말한대로, 타입스크립트(TypeScript)는 자바스크립트(JavaScript)를 기반으로 한 프로그래밍 언어로, 자바스크립트의 한계점을 보완하기 위해 만들어졌다.
타입스크립트는 정적타입 언어로, 변수와 함수의 타입을 명시할 수 있다. 컴파일러를 통해 코드 작성 시점에 타입 오류를 잡을 수 있어 개발 초기 단계에서 오류를 줄일 수 있다.
변수 선언 시 타입 명시 방법
let message: string = "hello"; let count: number = 42; let isDone: boolean = true;
배열 타입 명시 방법
let numbers: number[] = [1, 2, 3]; let strings: Array<string> = ["a", "b", "c"];
함수 표현식 타입 명시 방법
function add(a: number, b: number): number { return a + b; } //return이 있다면 반환 값에 대한 타입도 명시해야 한다. ㅤ function greet(name: string): void { console.log("Hello, " + name); } //return이 없다면 void라고 작성한다.
타입스크립트는 이러한 타입 명시를 통해 런타임 전인 컴파일타임에 타입 검사를 수행해 오류를 발견할 수 있게 한다.
let message: string = "hello"; //타입 명시하는 방법
message = 42;
// 타입이 다르기 때문에 런타임 전인 컴파일타임에 타입 검사가 이루어져 오류가 발생한다.
이렇게 타입스크립트를 사용하면 코드의 안정성과 가독성이 높아져 대규모 프로젝트나 협업 시에 큰 도움이 된다.
극복 ㄱㅂㅈㄱ