* 타입은 자바스크립트에서 다루는 값의 형태에 관한 설명
→ 형태 : 값에 존재하는 속성과 메서드 + 내장되어 있는 typeof 연산자가 설명하는 것 의미
* 원시타입은 총 7개
→ 계산된 초기값을 갖는 변수의 타입을 유추함
null, undefined, boolean, string, number, bigint, symbol
* 타입시스템
→ 코드를 읽고 존재하는 모든 타입의 값을 이해함
→ 각 값이 초기 선언에서 가질 수 있는 타입 확인하고 모든 방법 확인
→ 값의 사용법이 타입과 일치하지 않으면 오류 표시
* 자주 접하는 오류
1) 구문 오류 : 타입스크립트가 자바스크립트로 변환되는 것을 차단한 경우(잘못된 구문)
2) 타입 오류 : 타입 검사기에 따라 일치하지 않는 것이 감지된 경우
* 타입스크립트 : 변수의 초기값을 읽고 해당 변수가 허용되는 타입을 결정
→ ex) string
값을 넣고 boolean
값을 넣으면 오류 생김
→ 할당 가능성 : 타입스크립트에서 함수 호출이나 변수에 값을 제공할 수 있는지 여부 확인
Type... is not assignable to type..
* 변수에 타입스크립트가 읽어야할 초기값이 없는 경우도 존재
→ 기본적으로 변수를 암묵적인 any
타입으로 간주함
→ 변수는 세상 모든 것이 될 수 있음
→ any
를 사용 시 타입스크립트의 타입 검사 목적을 부분적으로 무력화하게 함
(타입 검사 기능을 잘 적용할 수 없음)
* 타입 애너테이션
→ 초기값을 할당하지 않고도 변수의 타입을 선언할 수 있는 구문
let slamdunk: string;
slamdunk = "강백호";
→ 위의 타입스크립트가 자바스크립트로 변환 시 string
은 사라짐
→ 객체에 어떤 멤버 속성이 존재하는지 알고 있음
→ string
으로 선언 후 number
나 다른 값에서 작동하는 코드 적용 시 작업이 허용되지 않음
→ 객체의 경우 관련 키가 없을 때도 알려줌
* 모듈
→ 비교적 최근에야 작성하느 코드를 공유하는 모듈(export
나 import
가 있는 파일)이 추가됨
→ 스크립트 : 모듈이 아닌 모든 파일
→ 한 모듈에서 다른 파일에서 선언된 변수와 동일한 이름으로 선언된 변수는 충돌 아님
→ 단 스크립트 파일에 선언된 변수는 다른 스크립트 파일에서 동일하게 이름 가질 수 없음
//가능한 경우
//북산.ts
export const name = "송태섭";
//북산2.ts
export const name = "송태섭";
//오류가 나는 경우
//북산.ts
import { name } from "./북산";
export const name = "송태섭";
→ 해당 파일은 전역 스코프로 간주하므로 모든 스크립트가 파일에 내용에 접근 가능
→ 스크립트 파일에 선언된 변수는 다른 스크립트 파일에 선언된 변수와 동일한 이름 가질 수 없음