let todoItems;
// api
function fetchTodoItems() {
const todos = [
{ id: 1, title: '안녕', done: false },
{ id: 2, title: '타입', done: false },
{ id: 3, title: '스크립트', done: false },
];
return todos;
}
// crud methods
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);
}
// business logic
function logFirstTodo() {
return todoItems[0];
}
function showCompleted() {
return todoItems.filter(item => item.done);
}
// TODO: 아래 함수의 내용을 채워보세요. 아래 함수는 `addTodo()` 함수를 이용하여 2개의 새 할 일을 추가하는 함수입니다.
function addTwoTodoItems() {
// addTodo() 함수를 두 번 호출하여 todoItems에 새 할 일이 2개 추가되어야 합니다.
}
// NOTE: 유틸 함수
function log() {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
let todoItems: Array<{ id: number; title: string; done: boolean }>;
// api
function fetchTodoItems(): Array<{ 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;
}
// crud methods
function fetchTodos(): Array<{ 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 }
): void {
todo.done = true;
todoItems.splice(index, 1, todo);
}
// business logic
function logFirstTodo(): { id: number; title: string; done: boolean } {
return todoItems[0];
}
function showCompleted(): Array<{ id: number; title: string; done: boolean }> {
return todoItems.filter(item => item.done);
}
// TODO: 아래 함수의 내용을 채워보세요. 아래 함수는 `addTodo()` 함수를 이용하여 2개의 새 할 일을 추가하는 함수입니다.
function addTwoTodoItems(
todo1: { id: number; title: string; done: boolean },
todo2: { id: number; title: string; done: boolean }
): void {
// addTodo() 함수를 두 번 호출하여 todoItems에 새 할 일이 2개 추가되어야 합니다.
const needToadd1 = addTodo(todo1);
const needToadd2 = addTodo(todo2);
}
// NOTE: 유틸 함수
function log() {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
// type Todo = {
// id: number;
// title: string;
// done: boolean;
// };
interface Todo {
id: number;
title: string;
done: boolean;
}
let todoItems: Todo[];
// api
function fetchTodoItems(): Todo[] {
const todos = [
{ id: 1, title: '안녕', done: false },
{ id: 2, title: '타입', done: false },
{ id: 3, title: '스크립트', done: false },
];
return todos;
}
// crud methods
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): void {
todo.done = true;
todoItems.splice(index, 1, todo);
}
// business logic
function logFirstTodo(): Todo {
return todoItems[0];
}
function showCompleted(): Todo[] {
return todoItems.filter(item => item.done);
// return todoItems.filter(function(item) {
// if(item.done) {
// return item;
// }
// })
}
// TODO: 아래 함수의 내용을 채워보세요. 아래 함수는 `addTodo()` 함수를 이용하여 2개의 새 할 일을 추가하는 함수입니다.
function addTwoTodoItems(): void {
// addTodo() 함수를 두 번 호출하여 todoItems에 새 할 일이 2개 추가되어야 합니다.
const todo1 = {
id: 4,
title: 'item 4',
done: false,
};
addTodo(todo1);
addTodo({
id: 5,
title: 'item 5',
done: false,
});
}
// NOTE: 유틸 함수
function log(): void {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
타입스크립트를 통해 타입 혹은 인터페이스를 생성함으로써 코드의 중복을 제거 할 수 있다.
뿐만 아니라 코드의 가독성을 높일 수 있다.