[TypeScript] Typescript Overview


  1. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  2. Complied Language
  • Transpile
  • JS โ‡’ Interpreted Language
CompiledInterpreted
์ปดํŒŒ์ผ ํ•„์š” O์ปดํŒŒ์ผ ํ•„์š” X
์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š” O์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š” X
์ปดํŒŒ์ผํ•˜๋Š” ์‹œ์  O์ปดํŒŒ์ผํ•˜๋Š” ์‹œ์  X
์ปดํŒŒ์ผ๋œ ๊ฒฐ๊ณผ๋ฌผ ์‹คํ–‰์ฝ”๋“œ ์ž์ฒด๋ฅผ ์‹คํ–‰
์ปดํŒŒ์ผ๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ์‹คํ–‰ํ•˜๋Š” ์‹œ์ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹œ์  O = ๋Ÿฐํƒ€์ž„

Traditional Compiled Language

  • ์ปดํŒŒ์ผ ์–ธ์–ด
  • C , C++ , Go, C#
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ Source Code๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ Compile์ด๋ผ๊ณ ํ•จ
  • ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹(์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด) ๋ณด๋‹ค ๋น ๋ฆ„

tscโ€”init โ‡’ tsconfig.json file ์ƒ์„ฑ

"target": "es2016" => ์ปดํŒŒ์ผ ์‹œํ‚ฌ ES๋ฒ„์ „
"module": "commonjs" => ๊ฒฐ๊ณผ์˜ ๋ชจ๋“ˆ์„ ๋ณ€ํ™˜


IDE ํ™œ์šฉ

Compiler

  • VS Code์— ์ปดํŒŒ์ผ๋Ÿฌ ๋‚ด์žฅ

tslint โ‡’ Typescript code ๊ทœ์•ฝ

  • npm i typescript tslint(๋กœ์ปฌ)
  • tslint โ€”int
  • tslint ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜


Super Property

  • compileOnSave - true/false(default false) โ‡’
  • extends - ํŒŒ์ผ ๊ฒฝ๋กœ๋ช…:string (์ž˜์•ˆ์“ฐ์ž„)
  • CompilerOptions
  • files โ‡’ ์ƒ๋Œ€ ํ˜น์€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์˜ ๋ฆฌ์ŠคํŠธ ๋ฐฐ์—ด (์„ค์ •์—†์œผ๋ฉด ๋ชจ๋‘ compile)
  • globํŒจํ„ด
  • include โ‡’ (์„ค์ •์—†์œผ๋ฉด ๋ชจ๋‘ compile)
  • exclude โ‡’ (์„ค์ •์—†์œผ๋ฉด ๋ชจ๋‘ compile)

CompilerOptions

@types //node_modules/@types ๋ผ๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉ / [] ๋นˆ ๋ฐฐ์—ด ์„ค์ •์‹œ ์‹œ์Šคํ…œ์ด์šฉ X

target : ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์„ ์–ด๋–ค ๋ฒ„์ „์œผ๋กœ ํ•  ๊ฒƒ์ธ์ง€ ์„ค์ • (์ง€์ • ์•ˆํ•  ์‹œ es3)

lib : type definition ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ• ์ง€  ์„ค์ •

target : TypeScript๋Š” JS API(Math ์™€ ๊ฐ™์€)์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ํƒ€์ž… ์ •์˜์™€ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ

module : ์ปดํŒŒ์ผ ๋œ ๋ชจ๋“ˆ์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ์–ด๋–ค ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์œผ๋กœ ํ• ์ง€๋ฅผ ๊ฒฐ์ • target์ด 'es6'๋ฉด es6๊ฐ€ ๋””ํดํŠธ๊ฐ’

Typescript Basic


Primitive Type : ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒํ˜•

literal : ๊ฐ’์ž์ฒด๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’

Boolean : true/false

Number : ์ˆซ์ž

String : ๋ฌธ์ž

Template String : ํ–‰์— ๊ฑธ์ณ ์žˆ๊ฑฐ๋‚˜ ํ‘œํ˜„์‹์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด

Undefined & Null : ๊ณ ์œ ๊ฐ’

*Void : ํƒ€์ž…์ด ์—†๋Š” ์ƒํƒœ , ์ฃผ๋กœ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด์ด ์—†์„ ๋•Œ ์‚ฌ์šฉ

*Any : ์–ด๋–ค ํƒ€์ž…์ด์–ด๋„ ์ƒ๊ด€์—†๋Š” ํƒ€์ž… , ์ตœ๋Œ€ํ•œ ์“ฐ์ง€ ์•Š๋Š”๊ฒŒ ํ•ต์‹ฌ

Never : ๋ฆฌํ„ด์— ์ฃผ๋กœ ์‚ฌ์šฉ (์ž์ฃผ ์•ˆ์“ฐ์ž„)

Array : ๋ฐฐ์—ด ๊ฐ์ฒด

*Tuple : ๋ฐฐ์—ด์ธ๋ฐ ํƒ€์ž…์ด ํ•œ๊ฐ€์ง€๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ (๊ฐ์ฒด์ž„)

*Enum : ๋น„์Šทํ•œ ๊ฐ’๋“ค๋ผ๋ฆฌ ๋ฌถ์–ด์ค„ ๋•Œ ์ž„์˜์˜ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ• ๋‹นํ•ด์คŒ โ‡’ Enum ์›์†Œ์˜ ๊ฒฐ๊ณผ๊ฐ’์€ string

*Symbol : ๊ณ ์œ ํ•˜๊ณ  ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์œผ๋กœ ๋งŒ๋“ฌ

Type Assertion


ํ˜• ๋ณ€ํ™˜๊ณผ ๋‹ค๋ฆ„

โ€˜ํƒ€์ž…์ด ์ด๊ฒƒ์ด๋‹คโ€™๋ผ๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ

  • ๋ณ€์ˆ˜ as ๊ฐ•์ œํ•  ํƒ€์ž… (์ฃผ๋กœ์‚ฌ์šฉ)
  • <๊ฐ•์ œํ•  ํƒ€์ž…=""> ๋ณ€์ˆ˜

Type Alias


ํƒ€์ž… ๋ณ„์นญ์„ ์ง€์–ด์คŒ

Interface



class implements interface

interface IPerson {
  name: string;
  hello(): void;
}

class Person implements IPerson {
  name: string;

  constructor(name: string) {
    this.name = name;
  }
  hello(): void {
    console.log(`hello ${this.name} ์ž…๋‹ˆ๋‹ค`);
  }
  public hi(): void {
    console.log(`ํ˜„์ง€ ${this.name} ์ž…๋‹ˆ๋‹ค`);
  }
}

const person: IPerson = new Person("Mark");

person.hi();

interface extends interface

interface Person {
  name: string;
  age?: number;
}

interface Korean extends Person {
  city: string;
}

// Person interface๋ฅผ ์ƒ์† ๋ฐ›๊ณ  Korean interface์— city์˜ ํƒ€์ž… ์ถ”๊ฐ€

const k: Korean = {
  name: "Kdn",
  city: "Seoul",
};

function interface

interface HelloPerson {
  (name: string, age?: number): void;
}

let helloPerson: HelloPerson = function (name: string) {
  console.log(name);
};

helloPerson("Mark");

//ํ•จ์ˆ˜์˜ ํƒ€์ž… ์ฒดํฌ๋Š” ํ• ๋‹นํ• ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉํ• ๋•Œ ํ•ฉ๋‹ˆ๋‹ค

Class

class Person {
	name:string;
	age:number;
	constructor(name: string ){
		this.name = name
	}
}
const person = new Person("Mark");

console.log(person.name)

//1. ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ๋””ํดํŠธ ์ƒ์„ฑ์ž๊ฐ€ ๋ถˆ๋ฆผ
//2. ํด๋ž˜์Šค์˜ ํ”„๋กœํผํ‹ฐ ํ˜น์€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ
 ๊ฐ’์„ ๋Œ€์ž…ํ•˜์ง€ ์•Š์œผ๋ฉด undefined์ž„

//3. ์ ‘๊ทผ์ œ์–ด์ž๋Š” public์ด ๋””ํดํŠธ๊ฐ’