02. 타입 시스템

개발공부·2023년 3월 21일
0

타입스크립트

목록 보기
5/8
post-thumbnail

1. 타입의 종류

* 타입은 자바스크립트에서 다루는 값의 형태에 관한 설명
→ 형태 : 값에 존재하는 속성과 메서드 + 내장되어 있는 typeof 연산자가 설명하는 것 의미

* 원시타입은 총 7개
→ 계산된 초기값을 갖는 변수의 타입을 유추함

null, undefined, boolean, string, number, bigint, symbol

* 타입시스템

→ 코드를 읽고 존재하는 모든 타입의 값을 이해함
→ 각 값이 초기 선언에서 가질 수 있는 타입 확인하고 모든 방법 확인
→ 값의 사용법이 타입과 일치하지 않으면 오류 표시

* 자주 접하는 오류

1) 구문 오류 : 타입스크립트가 자바스크립트로 변환되는 것을 차단한 경우(잘못된 구문)
2) 타입 오류 : 타입 검사기에 따라 일치하지 않는 것이 감지된 경우

2. 할당 가능성

* 타입스크립트 : 변수의 초기값을 읽고 해당 변수가 허용되는 타입을 결정

→ ex) string 값을 넣고 boolean 값을 넣으면 오류 생김
할당 가능성 : 타입스크립트에서 함수 호출이나 변수에 값을 제공할 수 있는지 여부 확인

  • Type... is not assignable to type..
    → 많이 접하는 오류, 각 타입에 맞는 값을 할당하지 않으면 나옴

3. 타입 애너테이션

* 변수에 타입스크립트가 읽어야할 초기값이 없는 경우도 존재

→ 기본적으로 변수를 암묵적인 any타입으로 간주함
→ 변수는 세상 모든 것이 될 수 있음
any를 사용 시 타입스크립트의 타입 검사 목적을 부분적으로 무력화하게 함

(타입 검사 기능을 잘 적용할 수 없음)

* 타입 애너테이션
→ 초기값을 할당하지 않고도 변수의 타입을 선언할 수 있는 구문

let slamdunk: string;
slamdunk = "강백호";

→ 위의 타입스크립트가 자바스크립트로 변환 시 string 은 사라짐

  • 아무것도 변하지 않는 변수에는 타입 애너테이션을 추가하지 않는 것을 선호
    → 수동으로 작성하는 것은 번거로움(복잡할 수록 더함)

4. 타입 형태

  • 타입스크립트는 변수에 할당된 값이 원래 타입과 일치하는지 확인하는 것 이상을 수행

→ 객체에 어떤 멤버 속성이 존재하는지 알고 있음
string 으로 선언 후 number 나 다른 값에서 작동하는 코드 적용 시 작업이 허용되지 않음
→ 객체의 경우 관련 키가 없을 때도 알려줌

* 모듈

→ 비교적 최근에야 작성하느 코드를 공유하는 모듈(exportimport가 있는 파일)이 추가됨
→ 스크립트 : 모듈이 아닌 모든 파일
→ 한 모듈에서 다른 파일에서 선언된 변수와 동일한 이름으로 선언된 변수는 충돌 아님
→ 단 스크립트 파일에 선언된 변수는 다른 스크립트 파일에서 동일하게 이름 가질 수 없음

//가능한 경우

//북산.ts
export const name = "송태섭";

//북산2.ts
export const name = "송태섭";
//오류가 나는 경우

//북산.ts
import { name } from "./북산";

export const name = "송태섭";

→ 해당 파일은 전역 스코프로 간주하므로 모든 스크립트가 파일에 내용에 접근 가능
→ 스크립트 파일에 선언된 변수는 다른 스크립트 파일에 선언된 변수와 동일한 이름 가질 수 없음

profile
개발 블로그, 티스토리(https://ba-gotocode131.tistory.com/)로 갈아탐

0개의 댓글