study/TypeScript
TypeScript 103
salalsksjwnn
2023. 4. 20. 17:26
728x90
103
Map
- TodoItem의 저장을 배열에서 Map 객체로 변경
- 전체 할일 목록을 출력하기 위한 메소드를 새로 정의
- 할일 목록 중에서 완료된 할일 목록을 삭제하는 메소드 추가
Map객체의 새로운 프로퍼티를 저장할 것
- key값과 value값을 적용한다.
테스트
- TodoCollections.ts
import TodoItem from "./TodoItem";
class TodoCollection{
private nextId : number = 1;
private itemMap : Map<number, TodoItem>;
constructor(public userName:string, public todoItems:TodoItem[] = []){
this.itemMap = new Map<number, TodoItem>();
todoItems.forEach((item)=>this.itemMap.set(item.id, item));
}
// todoItem이거나 undefined를 리턴(값이 없을 수도 있으니)
getTodoById(id:number) : TodoItem | undefined {
return this.itemMap.get(id);
}
addTodo(task:string):number{
while(this.getTodoById(this.nextId)){
this.nextId++;
}
this.itemMap.set(this.nextId, new TodoItem(this.nextId,task));
return this.nextId;
}
//includeComplete -> true : 모든 할일 목록을 반환
//includeComplete -> false : 완료 목록은 제외한 할일 목록 반환
getTodoItems(includeComplete:boolean):TodoItem[]{
return[...this.itemMap.values()].filter(
(item) => includeComplete || !item.complete
)
}
removeComplete():void{
this.itemMap.forEach((item)=>{
if(item.complete){
this.itemMap.delete(item.id)
}
})
}
markComplete(id:number, complete:boolean):void{
const todoItem = this.getTodoById(id);
if(todoItem){
todoItem.complete = complete;
}
}
}
export default TodoCollection;
- index.ts
728x90