{"id":25982673,"url":"https://github.com/combizera/rocketseat-typescript","last_synced_at":"2025-10-27T22:34:27.745Z","repository":{"id":273418166,"uuid":"919662059","full_name":"combizera/rocketseat-typescript","owner":"combizera","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-23T02:07:29.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-14T15:22:23.081Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/combizera.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":"2025-01-20T19:19:12.000Z","updated_at":"2025-01-23T02:07:33.000Z","dependencies_parsed_at":"2025-01-20T20:38:05.115Z","dependency_job_id":null,"html_url":"https://github.com/combizera/rocketseat-typescript","commit_stats":null,"previous_names":["combizera/rocketseat-typescript"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/combizera/rocketseat-typescript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combizera%2Frocketseat-typescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combizera%2Frocketseat-typescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combizera%2Frocketseat-typescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combizera%2Frocketseat-typescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/combizera","download_url":"https://codeload.github.com/combizera/rocketseat-typescript/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combizera%2Frocketseat-typescript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281355373,"owners_count":26486897,"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-27T02:00:05.855Z","response_time":61,"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":[],"created_at":"2025-03-05T09:40:05.171Z","updated_at":"2025-10-27T22:34:27.730Z","avatar_url":"https://github.com/combizera.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TypeScript\n\n## Exemplos básicos\n\nComo salvar variáveis\n\n```ts\n// Salvando String\nconst name = \"Ygor\";\n\n// Salvando Number\nconst age = 25;\n\n// Salvando Booleans\nconst knowPhp = true;\n```\n\n## Any/Null\n\n### Any\n\nO tipo `any` permite que você atribua qualquer valor a uma variável, sem restrições de tipo. É útil quando você não tem certeza do tipo de dado que estará lidando.\n\n```ts\nlet randomValue: any = 10;\nrandomValue = \"Hello\";\nrandomValue = true;\n```\n\n### Null\n\nO tipo `null` representa a ausência intencional de qualquer valor. Em TypeScript, você pode usar `null` para indicar que uma variável não tem valor.\n\n```ts\nlet emptyValue: string | null = null;\nemptyValue = \"Now it has a value\";\n```\n\n## Diferença entre Interface e Type\n\nVocê pode até sobrescrever `Interface`, mas não podemos sobrescrever `Type`. O `Type` também permite utilizar tipos primitivos para criar tipos customizados.\n\n## Interface\n\n```ts\ninterface UserInterface {\n  name: string;\n  age: number;\n}\n\nconst user: UserInterface = { name: \"Ygor\", age: 25 };\n```\n\n## Utilitários de Tipos\n\n### Partial\n\nO tipo `Partial` permite que você defina um tipo com todas as propriedades de outro tipo como opcionais.\n\n```ts\ninterface IUser {\n  name: string;\n  age: number;\n}\n\nconst user: Partial\u003cIUser\u003e = {};\n```\n\nDessa forma, você pode criar um objeto com base em `IUser` sem a necessidade de preencher todas as propriedades.\n\n### Pick\n\nO tipo `Pick` permite que você escolha propriedades específicas de um tipo para criar um novo tipo.\n\n```ts\ninterface IUser {\n  name: string;\n  age: number;\n  email: string;\n}\n\nconst user: Pick\u003cIUser, \"name\" | \"email\"\u003e = {\n  name: \"Ygor\",\n  email: \"ygor@combi.com\",\n};\n```\n\nSem a necessidade de preencher todas as propriedades.\n\n### Omit\n\nO tipo `Omit` permite que você remova propriedades específicas de um tipo para criar um novo tipo.\n\n```ts\ninterface IUser {\n  name: string;\n  age: number;\n  email: string;\n}\n\nconst user: Omit\u003cIUser, \"age\"\u003e = {\n  name: \"Ygor\",\n  email: \"ygor@combi\",\n};\n```\n\n### Record\n\nO tipo `Record` permite que você crie um tipo com base em um tipo existente e use uma chave para definir o tipo de valor.\n\n```ts\n// Objeto onde todas as chaves são string e os valores são números\nconst scores: Record\u003cstring, number\u003e = {\n  Ygor: 10,\n  John: 20,\n};\n\n// Limitando os valores\ntype Profile = \"admin\" | \"user\";\n\nconst users: Record\u003cstring, Profile\u003e = {\n  Ygor: \"admin\",\n  John: \"user\",\n};\n\n// Objetos personalizados\ninterface IUser {\n  name: string;\n  age: number;\n}\n\nconst users: Record\u003cstring, IUser\u003e = {\n  Ygor: { name: \"Ygor\", age: 25 },\n  John: { name: \"John\", age: 30 },\n};\n```\n\n### Typeof\n\nO tipo `typeof` permite que você obtenha o tipo de uma variável ou propriedade.\n\n```ts\nconst name = \"Ygor\";\n\ntype Name = typeof name; // string\n```\n\n### Keyof\n\nO tipo `keyof` permite que você obtenha todas as chaves de um tipo.\n\n```ts\ninterface IUser {\n  name: string;\n  age: number;\n}\n\ntype UserKeys = keyof IUser; // \"name\" | \"age\"\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcombizera%2Frocketseat-typescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcombizera%2Frocketseat-typescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcombizera%2Frocketseat-typescript/lists"}