23.07.25
원래는 웹페이지가 정적 (ex. text, image, hyperlink …)이었는데
JS가 나옴으로써 웹페이지에 동적인 효과까지 줄 수 있게됨
그리고 이러한 JS의 성능을 높이고자 구글에서 V8 엔진을 만들었고, 크롬 브라우저에는 V8 엔진이 내장되어 있음
JS는 프론트엔드에서 사용하던 언어였는데
Node.js라는 플랫폼이 나옴으로써 JS를 백엔드에서도 사용할 수 있게됨
그런데 프론트엔드와 달리 백엔드는 단순한 에러 하나로 서버가 다운될 수 있음
그런데 다른 언어들과 달리 JS는 개발자가 실수를 저질렀다는 것을 프로그램을 실행할 때 알려줘서
1. 실행 시간(run time)에 결정되는 변수 (데이터)타입 (= 동적 바인딩) <-> 컴파일 시간에 성격이 결정됨 (= 정적 바인딩)
2. 약한 타입 체크 : 변수 선언시 let, const와 같이 변수/상수를 구분하는 정도의 키워드만 지원
3. 물렁물렁한 객체 : 객체의 성질을 수시로 변화시킬 수 있음
JS를 사용하는 Node.js는 그만큼 다른 언어를 사용하는 백엔드 플랫폼 ? 보다 오류가 잦을 수 있음
이러한 JS의 약점을 해결하기 위해 TS가 등장
1-6 TypeScript의 등장
타입스크립트를 사용하면 객체 지향 프로그래밍 (OOP) 을 할 때 JS에 비해 더 큰 메리트가 있음
(아니 근데
java는 객체 지향 언어이고
JS는 객체 지향 프로그래밍같은 느낌 ??????)
특히 JS에서는 아무나 속성에 접근할 수 있고 마음대로 속성의 값을 변경할 수 있는데 이렇게되면 오류가 날 수 있음
그러나 TS에서는
class Person {
private name: string;
private age: number; // age가 private인 것을 주목하세요!
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public growOlder(): void {
this.age += 1;
}
}
const spartan = new Person('Spartan', 30);
spartan.age = 25; // Error: Property 'age' is private and only accessible within class 'Person'.
spartan.growOlder();
console.log(spartan.age); // Error: Property 'age' is private and only accessible within class 'Person'.
위 코드처럼 private과 public 등 (접근 제어자 사용이 가능해서 ????) 속성에 접근이나 값 변경을 함부로 하지 못함
그리고
d.ts 라는 확장자를 가진 선언 파일을 통해 외부 모듈 타입 정보를 제공할 수 있어서 JS 라이브러리도 안전하게 사용이 가능함
1-7 TypeScript 장점
정리 진짜 잘되어 있네요 ~ 잘보고 갑니다