{"id":22325743,"url":"https://github.com/equalogic/ts-class-initializable","last_synced_at":"2025-10-10T04:04:12.078Z","repository":{"id":39641893,"uuid":"195287847","full_name":"equalogic/ts-class-initializable","owner":"equalogic","description":"TypeScript abstract class allowing instance property initialization from a plain object","archived":false,"fork":false,"pushed_at":"2025-10-02T17:29:39.000Z","size":2092,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-02T19:23:29.824Z","etag":null,"topics":["class","initialization","typescript"],"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/equalogic.png","metadata":{"files":{"readme":"README.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-07-04T18:42:26.000Z","updated_at":"2025-09-29T05:33:51.000Z","dependencies_parsed_at":"2023-07-17T23:06:23.360Z","dependency_job_id":"cfa7c833-45b8-4adf-91ea-f5f12d17c0d0","html_url":"https://github.com/equalogic/ts-class-initializable","commit_stats":{"total_commits":832,"total_committers":6,"mean_commits":"138.66666666666666","dds":0.5961538461538461,"last_synced_commit":"18d1f0ea450166cd81b5f540a36a3b79b0356396"},"previous_names":["madscience/ts-class-initializable"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/equalogic/ts-class-initializable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalogic%2Fts-class-initializable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalogic%2Fts-class-initializable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalogic%2Fts-class-initializable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalogic%2Fts-class-initializable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/equalogic","download_url":"https://codeload.github.com/equalogic/ts-class-initializable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalogic%2Fts-class-initializable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002680,"owners_count":26083440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["class","initialization","typescript"],"created_at":"2024-12-04T02:13:33.649Z","updated_at":"2025-10-10T04:04:12.041Z","avatar_url":"https://github.com/equalogic.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ts-class-initializable\n\nA small helper for TypeScript classes to enable instance properties to be initialized by passing\na plain object to the constructor - without every class needing boilerplate code to handle this.\n\nExtend one of the `Initializable` classes and your class constructor will accept a\nplain object literal as its first argument, and assign the values to instance properties.\n\n### Installation\n\n```shell\nnpm i ts-class-initializable\n```\n\n### Example\n\n```ts\nimport { Initializable } from 'ts-class-initializable';\n\nclass Foo extends Initializable\u003cFoo\u003e {\n  public bar: string;\n  public baz: number;\n  public optional?: boolean;\n}\n\nconst instance: Foo = new Foo({\n  bar: 'foobar',\n  baz: 2,\n});\n\nconsole.log(instance.bar); // 'foobar'\n```\n\n### Classes\n\nThere are a few flavours:\n\n- `Initializable`: the constructor requires a plain object to initialize the instance\n- `PartiallyInitializable`: the constructor requires a plain object to initialize the instance,\n  but all properties are treated as optional\n- `OptionallyInitializable`: the constructor may accept a plain object to initialize the instance,\n  or you can do `new Foo()` without initialization\n- `OptionallyPartiallyInitializable`: the constructor may accept a plain object to initialize the instance,\n  and all properties are treated as optional\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalogic%2Fts-class-initializable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fequalogic%2Fts-class-initializable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalogic%2Fts-class-initializable/lists"}