πŸ‘©πŸ» νƒ€μž…λ³„μΉ­κ³Ό μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 ν•¨μˆ˜μ— νƒ€μž…λ“€μ„ μž‘μ„±ν•˜μ§€ μ•Šκ³ λ„ λ”°λ‘œ μ •μ˜ν•˜μ—¬ 쀑볡 μ½”λ“œλ“€μ„ λ¦¬νŒ©ν† λ§ ν•  수 μžˆλ‹€λŠ”μ . μ½”λ“œ λ¦¬νŒ©ν† λ§ ꡉμž₯히 μ€‘μš”γ… .γ…  λ‚˜μ€‘μ—λŠ” 천천히 μ½”λ“œ λ””μžμΈνŒ¨ν„΄μ— λŒ€ν•΄μ„œ μ—°κ΅¬ν•΄λ³΄μž...

 

🎈 νƒ€μž…λ³„μΉ­

type MyName = string;
const name: MyName = 'capt';

νƒ€μž… 별칭은 νŠΉμ • νƒ€μž…μ΄λ‚˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” νƒ€μž… λ³€μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€. 예λ₯Ό λ“€λ©΄ μœ„μ— 처럼 νƒ€μž…λ³„μΉ­μ€ μƒˆλ‘œμš΄ νƒ€μž… κ°’을 ν•˜λ‚˜ μƒμ„±ν•˜λŠ” κ²ƒμ΄ μ•„λ‹ˆλΌ μ •μ˜ν•œ νƒ€μž…에 λŒ€ν•΄ λ‚˜μ€‘에 μ‰½κ²Œ μ°Έκ³ ν•  μˆ˜ μžˆκ²Œ μ΄λ¦„을 λΆ€μ—¬ν•˜λŠ” κ²ƒκ³Ό κ°™λ‹€. νƒ€μž…λ³„μΉ­ μ“°λŠ” 법은 type으둜 μ‹œμž‘ν•΄μ„œ μœ„ μ½”λ“œμ²˜λŸΌ μ†μ„±λ“€μ˜ νƒ€μž…λ“€μ„ λ‹΄μ•„μ£Όλ©΄ λœλ‹€. 

 

🎈 μΈν„°νŽ˜μ΄μŠ€

interface User {
  age: number;
  name: string;
  }

var seho: User = {
  age: 33,
  name: 'μ„Έν˜Έ'
}

function getUser(user : βœ”οΈUser) {
console.log(user);
}

μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•˜μ΄λΌμ΄νŠΈλΌκ³  ν•  수 μžˆλ‹€. 그만큼 μ€‘μš”ν•˜λ‹€. μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•œ μœ„μ˜ μ½”λ“œλ₯Ό 보면 UserλΌλŠ” interface λ§Œλ“€μ–΄ 속성듀을 λ„£μ–΄μ£Όκ³ , λ³€μˆ˜μ— μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™œμš©ν•œ λ‹€μŒ μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό λ§Œλ“€ λ•Œ Userλ₯Ό λ„£μ–΄μ£Όλ©΄ κΈ΄ μ½”λ“œμ˜ λͺ…μ‹œμ  νƒ€μž…λ“€μ„ μ•ˆλ„£μ–΄λ„ λœλ‹€.

🎈 νƒ€μž…λ³„μΉ­κ³Ό μΈν„°νŽ˜μ΄μŠ€ 차이점

νƒ€μž… 별칭과 μΈν„°νŽ˜μ΄μŠ€μ˜ κ°€μž₯ 큰 차이점은 νƒ€μž…μ˜ ν™•μž₯ κ°€λŠ₯, λΆˆκ°€λŠ₯ 여뢀이닀. μΈν„°νŽ˜μ΄μŠ€λŠ” ν™•μž₯이 κ°€λŠ₯ν•œλ° λ°˜ν•΄ νƒ€μž… 별칭은 ν™•μž₯이 λΆˆκ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ, κ°€λŠ₯ν•œν•œ typeλ³΄λ‹€λŠ” interface둜 μ„ μ–Έν•΄μ„œ μ‚¬μš©ν•˜λŠ” κ²ƒμ„ μΆ”μ²œν•œλ‹€.

 

 


 

 

πŸŽˆν•¨μˆ˜μ˜ μŠ€νŽ™(ꡬ쑰)에 μΈν„°νŽ˜μ΄μŠ€ ν™œμš©

interface SumFunction {
  (a: number, b: number) : number;
}

let sum : SumFunction;
sum = function(a: number, b: number) : number {
  return a+b;
}

sum μ΄λΌλŠ” ν•¨μˆ˜μ˜ κ·œμΉ™μ„ μ •μ˜ν•¨

 

πŸŽˆμΈλ±μ‹±

interface StringArray {
  [index: number] : string;
  //indexλŠ” 숫자λ₯Ό λ°›κ³ , λ°˜ν™˜λ˜λŠ” 값은 λ¬Έμžμ—΄λ‘œ
}

var arr : StringArray = ['a','b','c','d'];

indexλŠ” μˆ«μžλ₯Ό λ°›κΈ° λ•Œλ¬Έμ— number둜 μ§€μ •ν•˜κ³ , λ°˜ν™˜λ˜λŠ” κ°’은 λ¬Έμžμ—΄(string)둜. κ·Έλ¦¬κ³  arrλΌλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€ λ•Œ μ΄λ―Έ λ§Œλ“€μ–΄μ§„ StringArray μΈν„°νŽ˜μ΄μŠ€ μ†μ„± κ·œμΉ™λŒ€λ‘œ λ°°μ—΄ κ°’듀은 λ¬Έμžμ—΄λ‘œ μž…λ ₯ν•΄μ€€λ‹€.

 

 

🎈 μΈν„°νŽ˜μ΄μŠ€ λ”•μ…”λ„ˆλ¦¬ νŒ¨ν„΄

interface StringRegexDictionary {
  [key:string] : RegExp;
}

var obj : StringRegexDictionary = {
  cssFile : /\.css$/,
  jsFile : /\.js$/
}

Object.keys(obj).forEach(function(value) {})

StringRegexDictionary μΈν„°νŽ˜μ΄μŠ€μ— μ™Όμͺ½μ— μžˆλŠ” key값은 string으둜 였λ₯Έμͺ½μ€ RegExpλΌλŠ” μ •κ·œν‘œν˜„μ‹μœΌλ‘œ μ§€μ •ν–ˆλ‹€. objλΌλŠ” λ³€μˆ˜μ— StringRegexDictionaryλ₯Ό λΆˆλŸ¬μ™”μœΌλ‹ˆ μƒˆλ‘œμš΄ λ³€μˆ˜λ₯Ό λ§Œλ“€ λ•Œ μƒν˜Έκ΄€κ³„ μΌμΉ˜ν•˜κ²Œ μ™Όμͺ½μ—λŠ” string λ°©μ‹μœΌλ‘œ 였λ₯Έμͺ½μ—λŠ” μ •κ·œν‘œν˜„μ‹μ„ μ‚¬μš©ν•΄μ€˜μ•Όν•œλ‹€. 그리고 λ§ˆμ§€λ§‰μ— Object둜 μ‹œμž‘ν•˜λŠ” λ¬Έμž₯의 μ½”λ“œλŠ” keys에 objλΌλŠ” keyλ“€λ§Œ λ°°μ—΄λ‘œ λ§Œλ“  λ‹€μŒμ— 반볡문 forEach λŒλ €μ€€λ‹€λŠ” 것이고 function ν•¨μˆ˜ νŒŒλΌλ―Έν„° μ•ˆμ— λ“€μ–΄μžˆλŠ” valueλŠ” stringλ₯Ό μ˜λ―Έν•œλ‹€.

 

🎈 μΈν„°νŽ˜μ΄μŠ€μ˜ ν™•μž₯

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

interface Developer extends Person {
  language: string;
}

Personμ΄λΌλŠ” μΈν„°νŽ˜μ΄μŠ€ μ•ˆμ— 속성듀을 μ •μ˜ν•΄λ‘κ³  이걸 ν™•μž₯ν•΄μ„œ μ½”λ“œ 수λ₯Ό μ€„μ΄λŠ” 방법이닀. λ¨Όμ € Person μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ ν–ˆμœΌλ‹ˆ DeveloperλΌλŠ” μΈν„°νŽ˜μ΄μŠ€μ— extendsλ₯Ό μ‚¬μš©ν•΄μ„œ Person을 ν™•μž₯ μ‹œμΌœμ€¬κΈ° λ•Œλ¬Έμ—, nameκ³Ό ageλž€ 속성은 μ•Œμ•„μ„œ μ•”λ¬΅μ μœΌλ‘œ κ°€μ§€κ³  κ°€κ²Œ λœλ‹€. 그리고 DeveloperλΌλŠ” μΈν„°νŽ˜μ΄μŠ€μ—λŠ” ν•„μš”λ‘œ ν•˜λŠ” 속성듀은 κ·Έλ•Œ κ·Έλ•Œλ§ˆλ‹€ μƒˆλ‘­κ²Œ μΆ”κ°€μ‹œμΌœμ„œ μ„ μ–Έν•΄μ£Όλ©΄ λœλ‹€. (μœ„ μ½”λ“œ 보면 language만 μΆ”κ°€μ‹œμΌœμ£Όμ—ˆλ‹€)

 

 

🎈 TODO-LIST ν”„λ‘œμ νŠΈ μ½”λ“œλ¦¬λ·°

interface Todo {
  id: number;
  title: string;
  done: boolean;
}

let todoItems: Todo[];


🎈api
function fetchTodoItems():Todo[] {
  //{ id: number; title: string; done: boolean; }
  const todos = [
    { id: 1, title: 'μ•ˆλ…•', done: false }, //이것듀이 λ‹€ objectλ‹€
    { id: 2, title: 'νƒ€μž…', done: false },
    { id: 3, title: '슀크립트', done: false },
  ];
  return todos;
}

🎈crud methods
function fetchTodos(): object[] {
  const todos = fetchTodoItems();
  return todos;
} 

=> λ¦¬ν„΄ν–ˆμ„ λ•Œ  object[] λ₯Ό λ°˜ν™˜ν•œλ‹€.

πŸŽˆν•  일 μΆ”κ°€ν•˜κΈ°
function addTodo(todo: Todo): void {
  todoItems.push(todo);
}

=> ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’(return)이 없을 λ•Œ voidλ₯Ό ν•΄μ€˜μ•Όν•œλ‹€.

🎈 ν•  일 μ§€μš°κΈ°
function deleteTodo(index : number):void {
  todoItems.splice(index, 1);
}

=> indexλŠ” λ°°μ—΄μ˜ index이기 λ•Œλ¬Έμ— νƒ€μž…μ€ number둜 μ§€μ •ν•΄μ£ΌλŠ” 것이 μ’‹λ‹€.

🎈 ν•  일 μ™„λ£Œν•˜κΈ°
function completeTodo(
  index:number,
  todo: Todo
):void {
  todo.done = true;
  todoItems.splice(index, 1, todo);
}

=> void둜 κ°’ λ°˜ν™˜

🎈 business logic
function logFirstTodo(): object{
  return todoItems[0];
} 

function showCompleted() : object[] {
  return todoItems.filter(item => item.done);
} 

function addTwoTodoItems() : void {
  const item1 = {
    id: 4,
    title: 'μ•„μ΄ν…œ 4',
    done: false,
  }

  addTodo(item1);
  addTodo({
    id: 5,
    title: 'μ•„μ΄ν…œ 5',
    done: false,
  });
} 

function log() : void {
  console.log(todoItems);
}

todoItems = fetchTodoItems();
addTwoTodoItems();
log();

μ•žμ„œ πŸ“ƒ νƒ€μž…μŠ€ν¬λ¦½νŠΈ μž…λ¬Έ 03 : 자주 μ“°λŠ” κΈ°λ³Έ νƒ€μž… μ •μ˜, λ¬Έμžμ—΄ μ„ μ–Έ 방식 μ—μ„œ μ•Œμ•„λ³Έ νƒ€μž…μ •μ˜λ“€μ„ νˆ¬λ‘λ¦¬μŠ€νŠΈ ν”„λ‘œμ νŠΈμ— λ‹€ λ…Ήμ—¬λ‚΄μ—ˆλ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ κ°€μž₯ 핡심인 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•΄ Todo의 νƒ€μž…λ“€μ„ μ„ μ–Έν•΄μ£Όμ—ˆκ³ , ν•  일 λͺ©λ‘μ€ μ—¬λŸ¬κ°œμ΄λ‹ˆ λ°°μ—΄λ‘œ λ°˜ν™˜ν•΄μ£Όμ—ˆλ‹€. ex) Todo[].

그리고 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•˜λ”λΌλ©΄

function fetchTodoItems(id: number; title: string; done: boolean;) {
  const todos = [
    { id: 1, title: 'μ•ˆλ…•', done: false },
    { id: 2, title: 'νƒ€μž…', done: false },
    { id: 3, title: '슀크립트', done: false },
  ];
  return todos;
} 

μœ„μ²˜λŸΌ μ—„μ²­λ‚˜κ²Œ κΈ΄ μ½”λ“œλ₯Ό μ„ λ³΄μ˜€μ„ν…λ° μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•΄μ„œ ν•œλ²ˆμ— Todo[ ] μ΄λŸ°μ‹μœΌλ‘œ λ‚˜νƒ€λ‚΄μ–΄ μ½”λ“œλ₯Ό μ΅œμ†Œν™” μ‹œμΌ°λ‹€. 그리고 ν•  일 μΆ”κ°€ ν•  λ•ŒλŠ” pushλ₯Ό μ‚¬μš©ν•˜μ˜€κ³ , λ°˜ν™˜κ°’μ€ ν•  일을 κ·Έλ•Œκ·Έλ•Œλ§ˆλ‹€ μΆ”κ°€ν•˜λŠ”κ±°λΌ μ—†μœΌλ‹ˆ voidλ₯Ό ν•΄μ£Όμ—ˆλ‹€. 그리고 ν•  일 μ§€μšΈ λ•Œλ„ λ§ˆμ°¬κ°€μ§€. λŒ€μ‹  ν•  일 μ§€μšΈ λ•ŒλŠ” splice λ₯Ό μ‚¬μš©ν•˜μ˜€λ‹€. splice λ©”μ„œλ“œλŠ” λ°°μ—΄μ˜ κΈ°μ‘΄ μš”μ†Œλ₯Ό μ‚­μ œ λ˜λŠ” κ΅μ²΄ν•˜κ±°λ‚˜ μƒˆ μš”μ†Œλ₯Ό μΆ”κ°€ν•˜μ—¬ λ°°μ—΄μ˜ λ‚΄μš©μ„ λ³€κ²½ν•œλ‹€λŠ” λœ»μ΄λ‹€. ν•  일이 μ™„λ£Œλ˜λ©΄ μ²΄ν¬λž€μ— 체크가 ν† κΈ€λ°©μ‹μœΌλ‘œ on/offκΈ°λŠ₯을 true, false둜 λ‚˜νƒ€λ‚΄μ£Όμ—ˆλ‹€. 그리고 νŠΉμ • ν•¨μˆ˜λ§Œ κ±ΈλŸ¬λ‚΄λŠ” 것을 filter라고 ν•œλ‹€. filterλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” μ˜€λΈŒμ νŠΈλ“€μ΄ λ°°μ—΄λ‘œ λ˜μ–΄μžˆμ–΄ κ·Έ μ€‘μ—μ„œ κ±ΈλŸ¬μ£ΌλŠ” κ²ƒμ΄λ‹ˆ [ ] λ°°μ—΄ ν‘œμ‹œλ₯Ό ν•΄μ€˜μ•Όν•œλ‹€. 

 

 

+ Recent posts