
Typescript is a strongly typed programming language.
Node.js는 JS, TS 모두 이해할 수 있다.
TS 코드에 에러가 있으면, 그 코드는 JS로 컴파일되지 않는다.
만약 타입스크립트가 성공적으로 컴파일돼서 자바스크립트 코드를 주면,
타입스크립트 코드도 제대로 작성된 거고,
데이터 타입에도 문제가 없고,
자바스크립트 코드에 버그가 전혀 없다는 뜻이다.
보통은 변수를 선언하고 타입을 변경하지 않는다.
변경하는 게 이상한 코드임!
타입스크립트는 타입을 추론해준다.
타입을 설정해주면, Type Checker가 타입을 체크해준다.
let b : boolean = True
object의 타입 정의
const player : {
name: string,
age?: number // number | undefined
} = {
name: 'nico'
}
if(player.age && player.age < 10){ // cuz player.age가 undefined일 수 있음
}
타입을 미리 정의하면,
type Age = number;
type Name = string;
type Player = {
name: Name,
age?: Age
}
const nico: Player = {
name: 'nico'
}
const lynn : Player = {
name: 'lynn',
age: 12
}
함수를 사용하면,
type Age = number;
type Name = string;
type Player = {
name: Name,
age?: Age
}
function playerMaker(name:string): Player { // 괄호 뒤에 함수의 return값에 대한 type
return {
name:
}
}
const nico = playerMaker("nico")
nico.age = 12
readonly라는 보호장치가 있다. 변수 값을 변경할 수 없다.
type Age = number;
type Name = string;
type Player = {
readonly name: Name,
age?: Age
}
Tuple, 요소 갯수/순서가 맞아야한다.
const player: [string, number, boolean] = ["nico", 1, true]
any, type의 한종류이다.
ts로부떠 빠져나오고 싶을 때 쓰는 타입이다. 아무 타입이나 될 수 있다.
사용하지 않는 것이 좋다. 하지만 가-끔 써야할 때가 있다.
Typescript의 중요한 포인트는 Type Checker와 소통하는 것이다.
unknown
변수의 타입을 미리알 수 없을 때 사용한다.
let a: unknown;
if (typeof a === 'number'){
let b = a + 1;
}
if (typeof a === 'string'){
let b = a.toUpperCase();
}
void
아무것도 return하지 않는 함수를 뜻한다.
따로 지정해줄 필요는 없다.
function hello(): void{
console.log('x')
}
never
함수가 절대 return하지 않을 때 발생한다.
function hello(): never{
throw new Error('xxx')
}
실행되지않는 if, elif, else문은 타입이 never일 수 있다.
function hello(name: string | number) {
if(typeof namae === "string"){
name = 'a'
} else if (typeof name === "number") {
name = 12
} else { // else문은 타입이 never이다.
name = null
}