: 타입이란 자바스크립트에서 다루는 값의 형태에 대한 설명이다.
(형태란, 값에 존재하는 속성과 메서드 그리고 내장되어 있는 typeof 연산자가 설명하는 것을 의미)
null
undefined
boolean
string
number
bigint
symbol
// string
let firstName = "Lee";
// number
let age = 22;
// string | number
let total = Math.random() > 0.5 ? "string" : 22
타입스크립트가 코드로 이해할 수 없는 잘못된 구문을 감지할 때 발생한다. 이는 타입스크립트가 타입스크립트 파일에서 자바스크립트 파일을 올바르게 생성할 수 없도록 차단합니다.
let let bts;
// Error: ',' 가 필요!!
타입스크립트의 타입 검사기가 프로그램의 타입에서 오류를 감지했을 때 발생한다. 오류가 발생했다고 해서 타입스크립트 구문이 자바스크립트로 변환되는 것을 차단하지 않습니다.
console.blub("Hello world");
// Error : Property "blub" does not exist on type "Console"
: 타입스크립트는 변수의 초깃값을 읽고 해당 변수가 혀용되는 타입을 결정합니다. 이전에 변수에 새로운 값이 할당되면, 새롭게 할당된 값의 타입이 변수의 타입과 동일한지 확인합니다.
즉, 함수 호출이나 변수에 값을 제공할 수 있는지 여부를 확인하는 것을 할당 가능성 이라고 합니다.
// string
let firstName = "Lee";
firstName = "banana";
// number
let age = 5;
age = 25;
let lastName = "hazel";
lastName = true;
// Error : type "boolean" is not assignable to type "string".
: 초깃값이 없는 경우라면 타입 애너테이션을 이용해 타입을 지정할 수 있다.
초기 타입을 유츄할 수 없는 변수는 진화하는 any
라고 부릅니다.
let myName: string;
myName = "hazel";
myName = 22; // Error : "number"은 "string" 형식에 할당 할 수 없다.
초깃값을 할당하지 않고도 변수의 타입을 선언할 수 있는 구문을 type annotation
을 제공한다. 변수 이름뒤에 배치되며 콜론(:) 과 타입 이름을 차례대로 기재하면 된다.
: 변수에 할당된 값이 원래 타입과 일치하는지 확인하는 것 이상을 수행한다.
let cher = {
firstName: "lee",
lastName: "hazel",
};
cher.middleName;
// Error: Property "middleName" does not exist on type
// { firstName : stirng; lastName: string; }
: ECMA 스크립트 2015에는 파일 간에 가져오고 내보내는 구분을 표준화 하기 위해 ECMA 스크립트 모듈 ESM 사용한다.
참고로, 모듈 파일은 ./values 파일에서 value 를 가져오고, 변수 doubled를 내보낸다.
import {value} from "./values";
export const doubled = value * 2;
export | import
가 있는 파일// 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 {};
[Reference]
1. Learning typeScript(조시 골드버그/고승원/한빛미디어_2023)