반응형
구체적인 타입 정의
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;
}
//void : 반환값이 없다고 지정
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개 추가되어야 합니다.
addTodo({ id: 4, title: '할일4', done: false });
addTodo({ id: 5, title: '할일5', done: false });
}
// NOTE: 유틸 함수
function log(): void {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
중복코드 제거 및 Interface
// Type 별칭
// type Todo = Todo;
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(): object[] {
const todos = fetchTodoItems();
return todos;
}
//void : 반환값이 없다고 지정
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(): object {
return todoItems[0];
}
function showCompleted(): object[] {
return todoItems.filter(item => item.done);
}
// TODO: 아래 함수의 내용을 채워보세요. 아래 함수는 `addTodo()` 함수를 이용하여 2개의 새 할 일을 추가하는 함수입니다.
function addTwoTodoItems(): void {
// addTodo() 함수를 두 번 호출하여 todoItems에 새 할 일이 2개 추가되어야 합니다.
addTodo({ id: 4, title: '할일4', done: false });
addTodo({ id: 5, title: '할일5', done: false });
}
// NOTE: 유틸 함수
function log(): void {
console.log(todoItems);
}
todoItems = fetchTodoItems();
addTwoTodoItems();
log();
반응형
'TypeScript > TypeScript - 기초부터 실전까지' 카테고리의 다른 글
9. 타입 별칭과 인터페이스의 차이점 (interface로 선언해서 사용하는 것을 추천) (0) | 2023.10.08 |
---|---|
8. 인터페이스 활용 방법 (변수, 함수 인자, 함수 구조, 인덱싱, 딕셔너리 패턴, 상속) (0) | 2023.10.08 |
6. 함수타입 - 파라미터, 반환값, 파라미터를 제한하는 특성, 옵셔널 파라미터 (0) | 2023.10.08 |
5. 기본타입 - 문자열, 숫자, 배열, 튜플, 객체, 진위값 (0) | 2023.10.08 |
4. 타입스크립트 공식 문서 (0) | 2023.10.08 |