-
Notifications
You must be signed in to change notification settings - Fork 5
4. 타입스크립트 적용해보기
Woo-Dong93 edited this page Nov 19, 2020
·
1 revision
- 할일 관리 프로젝트
let todoItems: { id: number; title: string; done: boolean }[];
// api
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;
}
// crud methods
function fetchTodos(): object[] {
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(): object {
return todoItems[0];
}
function showCompleted(): object[] {
return todoItems.filter(item => item.done);
}
// TODO: 아래 함수의 내용을 채워보세요. 아래 함수는 `addTodo()` 함수를 이용하여 2개의 새 할 일을 추가하는 함수입니다.
function addTwoTodoItems(): void {
// addTodo() 함수를 두 번 호출하여 todoItems에 새 할 일이 2개 추가되어야 합니다.
const item1 = {
id: 4,
title: '아이템 4',
done: false,
};
addTodo(item1);
addTodo({
id: 5,
title: '아이템 5',
done: false,
});
}
// NOTE: 유틸 함수
function log(): void {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
-
문제 : 중복된 타입이 많이 존재하고 있다.
-
타입을 미리 정의 할 수 있다.
- type 변수를 활용하기 ( 별칭 방법 )
type Todo = { id: number; title: string; donme: boolean; }; let todoItems: Todo[];
- interface를 활용하기
interface Tod { id: number; ittle: string; done: boolean; } let todoItems: Todo[];