Initialize the Node.js project using NPM:
> npm init -y
{
"name": "js-docs",
"version": "1.0.0",
"description": "",
"main": "app.js",
"type": "module",
"scripts": {
"start": "node ./src/app.js",
},
"keywords": [],
"author": "",
"license": "ISC"
}
- src/app.js
- src/models/user.mjs
- src/models/todo.mjs
// todo.mjs
/**
* Creates a new Todo
* @property {number} id - Todo id
* @property {string} title - Todo title
* @property {string} description - Todo description
* @property {boolean} isCompleted - Todo isCompleted status
*/
export default class Todo {
id;
title;
description;
isCompleted;
constructor(id, title, description, isCompleted) {
this.id = id;
this.title = title;
this.description = description;
this.isCompleted = isCompleted;
}
}
A user holds a list of Todos.
// user.mjs
/**
* Creates a new User
* @property {number} id - User Id
* @property {string} username - User username
* @method addTodo {Function} - Adds new todo
* @method getTodos {Function} - Retrieves all todos
*/
export default class User {
id;
username;
#todos = []; // #todos is a private class member
constructor(id, username) {
this.id = id;
this.username = username;
}
/**
* Used to add a new todo
* @param {Todo} todo - New todo
* @returns {void} - Does not return anything
*/
addTodo(todo) {
this.#todos.push(todo);
}
/**
* Used to retrieve all todos
* @returns {Todo[]} - Todos list
*/
getTodos() {
return this.#todos;
}
}
import Todo from './models/todo';
import User from './models/user';
const todo = new Todo(1, 'Must write a new blog', 'Something awesome', false);
const user = new User(1, 'Mirzly');
user.addTodo(todo);
const userTodos = user.getTodos();
console.log('userTodos :>> ', userTodos);
JSDoc docs appearing in VSC Editor