-
TYPE SCRIPT의 등장카테고리 없음 2023. 12. 19. 11:55
구세주 TS의 등장
JS의 모든 기능을 포함하고 추가적인 기능을 제공
JS의 단점 복습
- 실행 시간에 결정되는 변수 타입
- 약한 타입 체크
- 너무나도 물렁물렁한 객체
TS의 변화
1. 컴파일 시간에 변수의 타입을 체크 = 코드의 에러를 사전에 방지
EX) FUNTION ADD(A+B) =
RETURN A+B ;
IF -> CONST RESULT = ADD(1, "2");
3이 나오지만 TYPE은 문자로 나온다
하지만 TS 도입후, VS코드에서 자동으로 ERROR로 명확하게 나타낸다.
약한 타입 체크 자동으로 ERROR로 명확하게 나타낸다.
물렁물렁한 객체 자동으로 ERROR로 명확하게 나타낸다.
김창민 튜터님 "너무종다"
TS의 매력
객체 지향 프로그래밍을 할 때도 매리트가 있다.
좋지 못한 객체지향 프로그래밍 예시---
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
growOlder() {
this.age += 1;
}
}
const spartan = new Person('Spartan', 30);
spartan.age = 25; // 외부에서 age 속성을 마음대로 조작할 수 있어요! 뜻밖에 회춘?
spartan.growOlder();
console.log(spartan.age); // 결국 1살을 더 먹었지만 르탄이는 26세차근 차근 나이가 먹는것을 기대했지만 AGE에 속성을 접근하면 AGE가 마음대로 바뀐다. 이런이런
접근 제어자로 프로퍼티의 캡슐화를 보장한다.
좋은 예시
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'.이런 식으로 PERSON을 캡슐화해서 PRIVITE 한 객체값을 만들 수 있다.
그렇게 되면 AGE에 25살이라는 VALUE을 접근할 수 없다.
그렇기에 에러가 난다.
로직에 접근성을 막기위한 방법