동적타입, 정적타입
타입 체커가 컴파일 타임에 수행되는지 런타임에 수행되는지 여부
정적 타입
- 개발자가 타입을 명시적으로 타이핑해야한다.
- 타입 체커와 타입 추론을 통해 일부 타이핑을 생략할 수 있다.
- TypeScript, Scala, Haskell
- 보다 빠르게 오류를 잡아낼 수 있다. => 빌드 전 오류 발견, 실행하지 않아도 컴파일러에서 오류 발견
- 자동 완성을 통해 데이터 타입 혹은 속성에 대한 확신을 가질 수 있다.
- 타입스크립트가 정적 타입의 언어와 완전히 같지는 않다.
동적 타입
- 동적 타입 시스템은 런타임 상황에도 타입이 동등한지 확인한다.
- JavaScript, Python, Ruby, Perl, PHP
- JavaScript는 느슨한 타입의 동적 타입 언어
- 변수는 어떤 타입과도 연결되지 않는다.
- 프로그램이 실행 모든 타입의 값으로 할당하거나 재할당 할 수 있으며 타입을 변경하거나 객체에 새로운 속성이나 메서드를 추가할 수 있다.
타입스크립트가 타입을 이해하는 방법에 대한 이야기
구조적 타입 (Structural Type)
- 객체가 어떤 속성들을 가지는지 즉 구조를 기준으로 타입을 따진다.
- 자바스크립트, 타입스크립트
- 타입스크립트에서 타입을 이해할 때는 이제 구조적 타입 시스템을 따른다 => 집합 확인 (타입끼리의 관계가 집합으로 이루어짐)
명목적 타입 (Nominal Type)
- 각 타입이 고유하다는 것을 의미 즉 동일한 타입이나 데이터가 있더라도 타입을 공유할 수 없다.
- 이름 기반으로 타입을 따진다
- 작성한 타입이 런타임에 존재한다.
- C#, Java
덕 타이핑
- 타입의 생김새가 오리와 같다면 바로 오리의 타입임을 뜻한다.
- 오리처럼 보이고, 오리처럼 수영하고, 오리처럼 꽥꽥거리면 그것은 오리일 것이다.
- 거위가 오리와 같은 속성을 가지고 있다면 그것조차도 오리 타입
- 일반적으로 동적 타입 시스템을 설명하는 데 덕 타이핑이 사용된다.
4차 회고
3차 게시물이 사라졋다.....ㅜㅜ
이번 챌린지는 리액트쿼리 때보다도 거의 참여를 못했다.
타입스크립트 심화에 대한 내용은 스스로 공부해야겠다...
타입스크립트 세션 이후에는 이력서 첨삭 및 면접, 취업 전략 세션이었는데 아무래도 이제 지원을 시작하다보니 이 부분에만 더 집중해서 들었던 것 같다.
타입스크립트는 .. 다시 처음부터 시작해보자 하하..