From 2f5b58e0f6372cfd71e7b1461e304e430a61b3dd Mon Sep 17 00:00:00 2001 From: Frastio10 Date: Wed, 29 Dec 2021 09:19:42 +0700 Subject: [PATCH] Typescript 2: Frastio Agustian --- todolist-day-2/dist/index.js | 17 ++++++++++++++ todolist-day-2/dist/models/Todo.js | 21 +++++++++++++++++ todolist-day-2/dist/models/TodoList.js | 8 +++++++ todolist-day-2/dist/models/TodoManager.js | 28 +++++++++++++++++++++++ todolist-day-2/dist/types/todoTypes.js | 2 ++ todolist-day-2/src/index.ts | 23 +++++++++++++++++++ todolist-day-2/src/models/Todo.ts | 27 ++++++++++++++++++++++ todolist-day-2/src/models/TodoList.ts | 9 ++++++++ todolist-day-2/src/models/TodoManager.ts | 28 +++++++++++++++++++++++ todolist-day-2/src/types/todoTypes.ts | 17 ++++++++++++++ todolist-day-2/tsconfig.json | 12 ++++++++++ 11 files changed, 192 insertions(+) create mode 100644 todolist-day-2/dist/index.js create mode 100644 todolist-day-2/dist/models/Todo.js create mode 100644 todolist-day-2/dist/models/TodoList.js create mode 100644 todolist-day-2/dist/models/TodoManager.js create mode 100644 todolist-day-2/dist/types/todoTypes.js create mode 100644 todolist-day-2/src/index.ts create mode 100644 todolist-day-2/src/models/Todo.ts create mode 100644 todolist-day-2/src/models/TodoList.ts create mode 100644 todolist-day-2/src/models/TodoManager.ts create mode 100644 todolist-day-2/src/types/todoTypes.ts create mode 100644 todolist-day-2/tsconfig.json diff --git a/todolist-day-2/dist/index.js b/todolist-day-2/dist/index.js new file mode 100644 index 0000000..81e5a3c --- /dev/null +++ b/todolist-day-2/dist/index.js @@ -0,0 +1,17 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const TodoManager_1 = __importDefault(require("./models/TodoManager")); +const todo = new TodoManager_1.default(); +todo.addTodo(1, 'Makan nasi', 'Makan nasi di rumah pak ahmad'); +todo.addTodo(2, 'Tidur', 'Tidur sama teman'); +todo.addTodo(3, 'Bermain', 'Bermain sama teman'); +console.log('UNMODIFIED ID : 1 -> ', todo.getTodoById(1)); +todo.getTodoById(1).setFinished = true; +todo.getTodoById(1).setTitle = 'Makan Bubur'; +todo.getTodoById(1).setDesc = 'Makan bubur di rumah pak jamal'; +todo.removeTodo(3); +console.log('MODIFIED ID : 1 -> ', todo.getTodoById(1)); +console.log('ALL TODOS -> ', todo.getAllTodos()); diff --git a/todolist-day-2/dist/models/Todo.js b/todolist-day-2/dist/models/Todo.js new file mode 100644 index 0000000..b9dcacc --- /dev/null +++ b/todolist-day-2/dist/models/Todo.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class Todo { + constructor(id, title, desc) { + this.id = id; + this.title = title; + this.start = new Date(); + this.desc = desc; + this.finished = false; + } + set setFinished(finished) { + this.finished = finished; + } + set setTitle(title) { + this.title = title; + } + set setDesc(desc) { + this.desc = desc; + } +} +exports.default = Todo; diff --git a/todolist-day-2/dist/models/TodoList.js b/todolist-day-2/dist/models/TodoList.js new file mode 100644 index 0000000..e93ade1 --- /dev/null +++ b/todolist-day-2/dist/models/TodoList.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class TodoList { + constructor() { + this.todos = []; + } +} +exports.default = TodoList; diff --git a/todolist-day-2/dist/models/TodoManager.js b/todolist-day-2/dist/models/TodoManager.js new file mode 100644 index 0000000..73a5488 --- /dev/null +++ b/todolist-day-2/dist/models/TodoManager.js @@ -0,0 +1,28 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const TodoList_1 = __importDefault(require("./TodoList")); +const Todo_1 = __importDefault(require("./Todo")); +class TodoManager extends TodoList_1.default { + constructor() { + super(); + } + addTodo(id, title, desc) { + let newTodo = new Todo_1.default(id, title, desc); + this.todos.push(newTodo); + return newTodo; + } + removeTodo(id) { + this.todos = this.todos.filter((todo) => todo.id !== id); + } + getTodoById(id) { + let todo = this.todos.filter((todo) => todo.id === id)[0]; + return todo; + } + getAllTodos() { + return this.todos; + } +} +exports.default = TodoManager; diff --git a/todolist-day-2/dist/types/todoTypes.js b/todolist-day-2/dist/types/todoTypes.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/todolist-day-2/dist/types/todoTypes.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/todolist-day-2/src/index.ts b/todolist-day-2/src/index.ts new file mode 100644 index 0000000..1f8abd9 --- /dev/null +++ b/todolist-day-2/src/index.ts @@ -0,0 +1,23 @@ +import Todo from './models/TodoManager' + +const todo = new Todo() + +todo.addTodo(1, 'Makan nasi', 'Makan nasi di rumah pak ahmad') +todo.addTodo(2, 'Tidur', 'Tidur sama teman') +todo.addTodo(3, 'Bermain', 'Bermain sama teman') + +console.log('----------------------------------------------') +console.log('UNMODIFIED ID : 1 -> ', todo.getTodoById(1)) + +todo.getTodoById(1).setFinished = true +todo.getTodoById(1).setTitle = 'Makan Bubur' +todo.getTodoById(1).setDesc = 'Makan bubur di rumah pak jamal' + +todo.removeTodo(3) +console.log('----------------------------------------------') + +console.log('MODIFIED ID : 1 -> ', todo.getTodoById(1)) +console.log('----------------------------------------------') + +console.log('ALL TODOS -> ', todo.getAllTodos()) +console.log('----------------------------------------------') diff --git a/todolist-day-2/src/models/Todo.ts b/todolist-day-2/src/models/Todo.ts new file mode 100644 index 0000000..465b6d2 --- /dev/null +++ b/todolist-day-2/src/models/Todo.ts @@ -0,0 +1,27 @@ +export default class Todo { + id: number + title: string + start: Date + desc: string + finished: boolean + + constructor(id: number, title: string, desc: string) { + this.id = id + this.title = title + this.start = new Date() + this.desc = desc + this.finished = false + } + + set setFinished(finished: boolean) { + this.finished = finished + } + + set setTitle(title: string) { + this.title = title + } + + set setDesc(desc: string) { + this.desc = desc + } +} diff --git a/todolist-day-2/src/models/TodoList.ts b/todolist-day-2/src/models/TodoList.ts new file mode 100644 index 0000000..d4d3f29 --- /dev/null +++ b/todolist-day-2/src/models/TodoList.ts @@ -0,0 +1,9 @@ +import { ITodo } from '../types/todoTypes' + +export default class TodoList { + todos: ITodo[] + + constructor() { + this.todos = [] + } +} diff --git a/todolist-day-2/src/models/TodoManager.ts b/todolist-day-2/src/models/TodoManager.ts new file mode 100644 index 0000000..f45140c --- /dev/null +++ b/todolist-day-2/src/models/TodoManager.ts @@ -0,0 +1,28 @@ +import { ITodoList, ITodo } from '../types/todoTypes' +import TodoList from './TodoList' +import Todo from './Todo' + +export default class TodoManager extends TodoList implements ITodoList { + constructor() { + super() + } + + addTodo(id: number, title: string, desc: string): ITodo { + let newTodo = new Todo(id, title, desc) + this.todos.push(newTodo) + return newTodo + } + + removeTodo(id: number): void { + this.todos = this.todos.filter((todo) => todo.id !== id) + } + + getTodoById(id: number): ITodo { + let todo = this.todos.filter((todo) => todo.id === id)[0] + return todo + } + + getAllTodos() { + return this.todos + } +} diff --git a/todolist-day-2/src/types/todoTypes.ts b/todolist-day-2/src/types/todoTypes.ts new file mode 100644 index 0000000..047db0f --- /dev/null +++ b/todolist-day-2/src/types/todoTypes.ts @@ -0,0 +1,17 @@ +export interface ITodo { + id: number + title: string + start: Date + desc: string + finished: boolean + setFinished: boolean + setTitle: string + setDesc: string +} + +export interface ITodoList { + todos: ITodo[] + addTodo(id: number, title: string, desc: string): ITodo + removeTodo(id: number): void + getTodoById(id: number): ITodo +} diff --git a/todolist-day-2/tsconfig.json b/todolist-day-2/tsconfig.json new file mode 100644 index 0000000..0ae2e5f --- /dev/null +++ b/todolist-day-2/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "rootDir": "./src", + "outDir": "./dist" + } +}