변수의 타입

  1. number
  2. string
  3. boolean
  4. null
  5. undefined
  6. any

any는 이것도 저것도 아닌 타입.

let a: number = 3;

a의 타입을 number로 지정한 후 숫자 3을 할당.

let b: string = "true";

b의 타입을 string로 지정한 후 문자 “true”를 할당.

let c: any = 4;

c = "string";

any 타입은 다른 타입을 변수에 할당해도 이상은 없음. 하지만 타입스크립트를 사용하는 목적이 퇴색되니 되도록이면 사용하지 말자.

let d: number | string = "string";

d = 123;

타입을 중복해서 지정가능.

let e: string[] = ["apple", "banana"];
let e: Array<string> = ["apple", "banana"];

두 가지 표현방법이 있다.
배열 안의 요소는 문자타입만 가능.

function addNumber(a: number, b: number): number {
  return a + b;
}

addNumber(3, 4); // 7

a와 b는 숫자타입이며 결과 또한 숫자타입이다.


object


기본형태

let user: { name: string } = { name: "Bob" };


Tuple


let f: [string, number] = ["z", 1];

튜플이라고 하며 배열 안의 여러 요소에 타입을 따로 지정해준다.

f = [1, "z"];

인 경우는 안됨.



void


함수가 아무것도 반환하지 않을 때 주로 사용.

function sayHello(): void {
  console.log("hello");
}


never


함수가 항상 에러를 반환하거나 무한루프일 때 주로 사용.

function showErr():never{
	throw new Error()
}

function loop():never{
	while(true){
    	// ...
    }
}



enum


비슷한 값들의 모음.

enum Os {
  Window, // Os.Window = 0
  Ios, // Os.Ios = 1
  Android, // // Os.Android = 2
}
enum Os {
  Window = 3, // Os.Window = 3
  Ios, // Os.Ios = 4
  Android, // // Os.Android = 5
}
enum Os {
	Window = 3,  // Os.Window = 3
    Ios, // Os.Ios = 10
    Android // // Os.Android = 11
}

자동으로 숫자가 할당된다.

console.log(Os[10]); // "Ios"
console.log(Os["Ios"]); // 10

양방향 래핑이 되어있기 때문에 위와 같은 것이 가능하며, 숫자일 때만 가능하다.

let myOs: Os;

myOs = Os.Window;

myOs에는 Os에 있는 값만 입력이 가능해진다.



js변환

node index.js 를 바로 사용하지 않고 tsc index.ts => node index.js.

브라우저는 js만 이해가능 tsc를 통해서 ts를 js로 변환을 해야한다.

터미널에서 tsc -w을 입력해두면 자동으로 변환해준다.


tsconfig.json


ts에서 js로 변환시 설정값 설정.

기본

{
  "compilerOptions": {
    "outDir": "dist", //컴파일  지정 파일에 저장
    "target": "es6",
    "module": "commonjs",
    "lib": ["es6"], // 라이브러리 지정
    "sourceMap": true
  }
}

ts를 tsconfig.json을 통해서 컴파일을 할 때는 vscode에서 cmd + shift + b -> tsc build - tsconfig.json 클릭.

window 환경에서는 에러가 발생할 가능성이 있음.
명령어를 복사 후
vscode 터미널이 아닌 cmd에서 실행.


댓글남기기