✨ 타입의 종류
- 타입이란 typeof 연산자가 설명하는 형태를 다루는 값
타입 시스템
- 코드를 읽고 모든 타입과 값을 이해
- 각 값이 초기 선언에서 가질 수 있는 타입을 확인
- 각 값이 추후 코드에서 어떻게 사용 될 수 있는지 확인
- 값의 사용법이 타입과 일치하지 않으면 오류를 표시
오류 종류
- 구문 오류 : TS → JS 로 컴파일 되는 것을 차단
- 타입 오류 : 타입 검사기에서 일치하지 않는 타입 확인
- 타입 오류는 JS로 변환되는 것을 막지 않는다.
✨ 할당 가능성
함수 호출이나 변수에 값을 제공할 수 있는지 여부를 확인하는 것을 할당 가능성이라 한다.
✨ 타입 애너테이션
때로 변수에 초기값이 없는 경우, 나중 타입을 파악하려고 하지 않는다. 암묵적인 any 타입으로 간주한다. 이 때의 any를 진화하는 any 라고 부른다.
let rocker // type : any (진화하는 any)
rocker = "Joan Jett" // type : string
rocker.toUpperCase() // OK
rocker = 19.52 // type : number
rocker.toPrecision(1) // OK
rocker.toUpperCase() // ERROR
rocker의 타입이 두 번 변경되었다. 이는 의도하였는지에 대한 여부를 알 수 없기 때문에 문제라고 할 수 있다.
이를 위해 변수의 타입을 초깃값 없이 선언할 수 있는 구문 타입 애너테이션 을 제공한다.
let rocker : string;
불필요한 타입 애너테이션
let firstName: string = "Tina"; // string 애너테이션은 중복이다.
✨ 타입 형태
모듈
모듈 : export 또는 import가 있는 파일
스크립트 : 모듈이 아닌 모든 파일
- 한 모듈에서 다른 파일에 선언된 변수와 동일한 이름으로 선언된 변수는 다른 파일의 변수를 가져오지 않는 한 이름 충돌로 간주하지 않는다.
// a.ts
export const shared = "char";
// b.ts
export const shared = "char";
// a파일에서 shared가 선언되었지만 오류가 나지 않는다.
import { shared } from "./a";
export const shared = "Cher";
// ERROR : 병합된 선언 'shared'의 개별 선언은 모두 내보내 졌거나 모두 로컬이어야 합니다.
- 모듈 스타일(export, import가 포함된)이 아닌 일반 스크립트인 경우 이름 충돌 에러로 간주한다.
// a.ts
const shared = "char"; // 블록 범위 변수 'shared'을(를) 다시 선언할 수 없습니다.
// b.ts
const shared = "char"; // 블록 범위 변수 'shared'을(를) 다시 선언할 수 없습니다.
해당 파일을 전역 스코프로 간주하기 때문
- CommonJS 형식의 require 함수에서 반환된 값은 any 타입으로 인지한다.
'기술 서적 > 하루 30분 러닝 타입스크립트' 카테고리의 다른 글
[하루 30분 러닝 타입스크립트] 인터페이스 (0) | 2024.01.04 |
---|---|
[하루 30분 러닝 타입스크립트] 배열 (0) | 2023.12.27 |
[하루 30분 러닝 타입스크립트] 함수 (0) | 2023.12.23 |
[하루 30분 러닝 타입스크립트] 객체 (0) | 2023.12.22 |
[하루 30분 러닝 타입스크립트] 유니언과 리터럴 (0) | 2023.12.19 |