{"id":19371484,"url":"https://github.com/ruwiseturtle/goit-typescript-hw-03","last_synced_at":"2026-05-18T14:05:15.783Z","repository":{"id":207765516,"uuid":"719977438","full_name":"Ruwiseturtle/goit-typescript-hw-03","owner":"Ruwiseturtle","description":null,"archived":false,"fork":false,"pushed_at":"2023-11-17T20:34:26.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T14:42:44.255Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ruwiseturtle.png","metadata":{"files":{"readme":"README-EN.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-17T10:06:40.000Z","updated_at":"2023-11-17T10:06:45.000Z","dependencies_parsed_at":"2025-02-24T14:37:08.194Z","dependency_job_id":"24bf12c2-c848-415f-a1e4-29ce20fe33dd","html_url":"https://github.com/Ruwiseturtle/goit-typescript-hw-03","commit_stats":null,"previous_names":["ruwiseturtle/goit-typescript-hw-03"],"tags_count":0,"template":false,"template_full_name":"goitacademy/typescript-homework-module-3","purl":"pkg:github/Ruwiseturtle/goit-typescript-hw-03","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ruwiseturtle%2Fgoit-typescript-hw-03","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ruwiseturtle%2Fgoit-typescript-hw-03/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ruwiseturtle%2Fgoit-typescript-hw-03/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ruwiseturtle%2Fgoit-typescript-hw-03/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ruwiseturtle","download_url":"https://codeload.github.com/Ruwiseturtle/goit-typescript-hw-03/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ruwiseturtle%2Fgoit-typescript-hw-03/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33180316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"ssl_error","status_checked_at":"2026-05-18T09:27:28.300Z","response_time":71,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T08:18:34.408Z","updated_at":"2026-05-18T14:05:15.745Z","avatar_url":"https://github.com/Ruwiseturtle.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Завдання 1\nКлас Student, який містить три властивості: name, age та grade. Замість того, щоб оголошувати ці властивості в тілі класу, потім у конструкторі, і нарешті надавати їм значення, напишіть скорочену ініціалізацію.\n```ts\nclass Student {\n  public name: string;\n  public age: number;\n  public grade: string;\n\n  constructor(name: string, age: number, grade: string) {\n    this.name = name;\n    this.age = age;\n    this.grade = grade;\n  }\n}\n```\n# Завдання 2\nВаше завдання полягатиме у створенні двох класів – Employee та Manager.\n\nКлас Employee повинен включати:\n\nвластивість name, яка буде доступна всім.\nвластивість department, яка буде доступна лише всередині класу Employee.\nsalary, яке буде доступне лише всередині класу Employee та його підкласів.\n\n\nКлас Manager повинен бути підклас класу Employee\n\nНеобхідно реалізувати в класі Manager конструктор, який викликатиме конструктор суперкласу та збільшуватиме salary на 10000.\n```ts\nclass Employee {\n  // Заповніть модифікатори доступу\n  name: string;\n  department: string;\n  salary: number;\n\n  constructor(name: string, department: string, salary: number) {\n    this.name = name;\n    this.department = department;\n    this.salary = salary;\n  }\n\n  getEmployeeDetails() {\n    return `Name: ${this.name}, Department: ${this.department}, Salary: ${this.salary}`;\n  }\n}\n\nclass Manager extends Employee {\n  // Реалізуйте конструктор та збільшіть salary на 10000\n}\n```\n# Завдання 3\nВи створюєте гру, де є персонажі з різними ролями. Зараз ви працюєте над класом Wizard, який має реалізовувати два інтерфейси - ICharacter та ISpellCaster.\n\nВизначте інтерфейси ICharacter та ISpellCaster так, щоб вони відповідали вимогам класу Wizard. Інтерфейс ICharacter повинен включати властивості name і level, і навіть метод introduce і levelUp. Інтерфейс ISpellCaster повинен включати метод castSpell.\n```ts\n// реалізація класу Wizard\nclass Wizard implements ICharacter, ISpellCaster {\n  constructor(public name: string, public level: number) {\n    if (this.level \u003c 1) {\n      throw new Error('Level too low');\n    }\n  }\n\n  introduce(phrase: string): void {\n    console.log(phrase + ', ' + this.name);\n  }\n\n  castSpell(): void {\n    console.log('Casting a spell, behold my power!');\n  }\n\n  levelUp(): void {\n    this.level++;\n    console.log(`Level up! New level is ${this.level}`);\n  }\n}\n\n// тестування класу\nconst wizard = new Wizard('Merlin', 15);\n\nwizard.introduce('I am the mighty wizard');\nwizard.castSpell();\nwizard.levelUp();  // Level up! New level is 16\n```\n# Завдання 4 *\nУ цьому завдання вам належить реалізувати сценарій життя, де людина, ключ і будинок взаємодіють один з одним.\n\nКлюч (Key): Створіть клас Key. У нього має бути одна приватна властивість signature, яка генерується випадково при створенні об'єкта цього класу (наприклад Math.random()). Також цей клас повинен мати метод getSignature, який повертає значення властивості signature.\n\nЛюдина (Person): Створіть клас Person. Конструктор цього класу приймає об'єкт класу Key і зберігає їх у приватному властивості key. Клас Person повинен мати метод getKey, який повертає збережений ключ.\n\nДім (House): Створіть абстрактний клас House. Цей клас має дві властивості: door, яка може бути відкрита (true), або закрита (false), і key, яка зберігає об'єкт класу Key. У цьому класі також повинен бути метод comeIn, який додає об'єкт класу Person у масив tenants, якщо door відкрита. Ваш абстрактний клас House також повинен мати абстрактний метод OpenDoor, який приймає об'єкт класу Key.\n\nМій будинок (MyHouse): Створіть клас MyHouse, який успадковується від абстрактного класу House. Реалізуйте метод openDoor у цьому класі. Якщо ключ, переданий цьому методу, збігається з ключем, збереженим як key, то двері відчиняються.\n\nПісля реалізації всіх класів створіть об'єкти для кожного класу та спробуйте відтворити сценарій, в якому людина приходить додому.\n\nНаприклад, ось так:\n\n```ts\nconst key = new Key();\n\nconst house = new MyHouse(key);\nconst person = new Person(key);\n\nhouse.openDoor(person.getKey());\n\nhouse.comeIn(person);\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruwiseturtle%2Fgoit-typescript-hw-03","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruwiseturtle%2Fgoit-typescript-hw-03","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruwiseturtle%2Fgoit-typescript-hw-03/lists"}