- 변환전
let todoItems;
function fetchTodoItems() {
const todos = [
{ id: 1, title: '안녕', done: false },
{ id: 2, title: '타입', done: false },
{ id: 3, title: '스크립트', done: false },
];
return todos;
}
function fetchTodos() {
const todos = fetchTodoItems();
return todos;
}
function addTodo(todo) {
todoItems.push(todo);
}
function deleteTodo(index) {
todoItems.splice(index, 1);
}
function completeTodo(index, todo) {
todo.done = true;
todoItems.splice(index, 1, todo);
}
function logFirstTodo() {
return todoItems[0];
}
function showCompleted() {
return todoItems.filter(item => item.done);
}
function addTwoTodoItems() {
}
function log() {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
- 변환 1단계
let todoItems: {id: number; title: string; done: boolean}[];
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;
}
function fetchTodos(): {id: number; title: string; done: boolean}[] {
const todos = fetchTodoItems();
return todos;
}
function addTodo(todo: {id: number; title: string; done: boolean}): void {
todoItems.push(todo);
}
function deleteTodo(index: number): void {
todoItems.splice(index, 1);
}
function completeTodo(index: number, todo:{id: number; title: string; done: boolean}) {
todo.done = true;
todoItems.splice(index, 1, todo);
}
function logFirstTodo(): {id: number; title: string; done: boolean} {
return todoItems[0];
}
function showCompleted(): {id: number; title: string; done: boolean}[] {
return todoItems.filter(item => item.done);
}
function addTwoTodoItems() {
addTodo({id: 4, title: 'item 4', done: false})
addTodo({id: 5, title: 'item 5', done: false})
}
function log() {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
- 변환 2단계 Type 또는 Interface를 사용하면 중복되는 코드를 방지할 수 있다.
type Todo = {
id: number;
title: string;
done: boolean;
}
let todoItems: Todo[];
function fetchTodoItems(): Todo[] {
const todos = [
{ id: 1, title: '안녕', done: false },
{ id: 2, title: '타입', done: false },
{ id: 3, title: '스크립트', done: false },
];
return todos;
}
function fetchTodos(): Todo[] {
const todos = fetchTodoItems();
return todos;
}
function addTodo(todo: Todo): void {
todoItems.push(todo);
}
function deleteTodo(index: number): void {
todoItems.splice(index, 1);
}
function completeTodo(index: number, todo:Todo) {
todo.done = true;
todoItems.splice(index, 1, todo);
}
function logFirstTodo(): Todo {
return todoItems[0];
}
function showCompleted(): Todo[] {
return todoItems.filter(item => item.done);
}
function addTwoTodoItems() {
addTodo({id: 4, title: 'item 4', done: false})
addTodo({id: 5, title: 'item 5', done: false})
}
function log() {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();