π©π» νμ λ³μΉκ³Ό μΈν°νμ΄μ€λ₯Ό ν΅ν΄ ν¨μμ νμ λ€μ μμ±νμ§ μκ³ λ λ°λ‘ μ μνμ¬ μ€λ³΅ μ½λλ€μ 리ν©ν λ§ ν μ μλ€λμ . μ½λ 리ν©ν λ§ κ΅μ₯ν μ€μγ .γ λμ€μλ μ²μ²ν μ½λ λμμΈν¨ν΄μ λν΄μ μ°κ΅¬ν΄λ³΄μ...
π νμ λ³μΉ
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λ₯Ό μ¬μ©ν λλ μ€λΈμ νΈλ€μ΄ λ°°μ΄λ‘ λμ΄μμ΄ κ·Έ μ€μμ κ±Έλ¬μ£Όλ κ²μ΄λ [ ] λ°°μ΄ νμλ₯Ό ν΄μ€μΌνλ€.