자바스크립트의 힘은 유연함에서 나온다! 유연함 조심!
=> 타입스크립트는
1) 코드가 작동하는 방식을 이해하고
2) 오류가 있는 부분을 알려주는 타입 검사기의 역할을 한다!
(지난 1장에서 살펴봄 ~)
let singer = "ME!";
마우스 오버하면 string타입이라고 알려줌!
타입 : 자바스크립트에서 다루는 값의 형태
에 대한 설명
(여기서 형태란, 값에 존재하는 속성과 메서드 그리고 내장되어있는 typeof 연산자가 설명하는것을 의~미~)
=> 어케 작동하냐면요!
let let wat;
// Error: ',' expected.
console.blub("Notiong");
// Error: Property 'blub' does not exist on type 'Console'.
타입스크립트는 변수의 초깃값을 읽고 해당 변수가 허용되는 타입을 결정한다.
ex. 첨 string => 재할당 string 문제 안되지만,
string => boolean은 안된단 소리
즉, 전달된 값이 예상된 타입으로 할당 가능한지 여부를 할당 가능성
이라고 함
let lastName = "mia";
lastName = true;
// Error : type "boolean" is not assignable to type "string".
초깃값이 없는 경우라면 타입 애너테이션을 이용해 타입 지정가능.
초기값을 유추할 수 없는 변수는 진화하는 any
라고 부른다
let myName: string;
myName = "mia";
myName = 22; // Error : "number"은 "string" 형식에 할당 할 수 없다.
타입스크립트는 초깃값을 할당하지않고도 변수의 타입을 선언할 수 있는 구문인 type annotation
을 제공!
타입애너테이션은 타입스크립트에만 존재하며, 런타임 코드에도 영향 주지 않고 유효한 자바스크립트 구문도 아님!
명시적 타입정의(타입 애너테이션)는 타입스크립트가 자체적으로 수집할 수 없을때만 사용하는것이 좋다.
속성이 존재하는지
도 확인한다.let rapper = "Queen";
rapper.length; // OK
rapper.push('!');
// Error: Property 'push' does not exist on type 'string'
모듈
이 추가됨!모듈
: export 또는 import가 있는 파일스크립트
: 모듈이 아닌 모든 파일!=> 모듈은 전역 스코프가 아닌 자체 스코프 내에서 실행됨!
(즉 모듈 내에서 선언된 변수, 함수, 클래스 등은 export 양식중 하나를 사용하여 명시적으로 export하지 않는 한 모듈 외부에서 보이지 앟음)
import {value} from "./values";
export const doubled = value * 2;
// a.ts
export const myName = "Lee";
// b.ts
expoprt const myName = "Lee";
// c.ts
import { myName } from "./a";
console.log(myName);
// a.ts
const myName = "Lee"
// Error : Cannot redeclare blok-scoped varible "myName".
// b.ts
const myName = "Lee";
// Error : Cannot redeclare block-scoped varible "myName".
// a.ts && b.ts
const myName = "Lee";
export {};