{"id":22344312,"url":"https://github.com/kauecdev/exercicios-typescript","last_synced_at":"2025-03-26T10:12:47.718Z","repository":{"id":123565788,"uuid":"374423680","full_name":"kauecdev/exercicios-typescript","owner":"kauecdev","description":"Exercícios da disciplina de Programação para Internet I","archived":false,"fork":false,"pushed_at":"2021-06-15T23:33:48.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T11:30:32.454Z","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/kauecdev.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}},"created_at":"2021-06-06T17:33:29.000Z","updated_at":"2021-06-15T23:33:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"23c95351-9db9-42a1-9bee-83e65c09107b","html_url":"https://github.com/kauecdev/exercicios-typescript","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Fexercicios-typescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Fexercicios-typescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Fexercicios-typescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Fexercicios-typescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kauecdev","download_url":"https://codeload.github.com/kauecdev/exercicios-typescript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245632425,"owners_count":20647193,"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","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-12-04T09:09:44.144Z","updated_at":"2025-03-26T10:12:47.706Z","avatar_url":"https://github.com/kauecdev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exercícios\n\n## Exercícios do dia 04 de junho\n\nQuestão 01 -  \n\n  a) Não irá compilar pois, ao dizermos que a variável `a` irá receber o valor `10`, ela associou a tipagem de `a` como sendo um `number`. Ao tentar atribuir o valor `\"2\"` à variável, ele detectará que o tipo de `\"2\"` é string, ou seja, diferente do tipo de `a`, o que irá resultar em um erro.  \n\n  b) Neste caso, o código não representa erros e irá compilar normalmente, pois declaramos o tipo da variável `b` como sendo do tipo `any`. O tipo `any`, recebe qualquer tipo de dados, então podemos atribuir qualquer tipo para essa variável.\n\n  c) Por fim, neste caso, atribuímos o tipo `number` para a variável `c`. Como o valor atribuído inicialmente e o atribuído posteriormente, ambos são do mesmo tipo (`number`), não ocorrerá erros na compilação.\n\nQuestão 02 - \n\n  a) 3, uma vez que ambos os valores são do tipo `number`, uma soma de fato é executada.  \n  b) 12, já que um dos valores é do tipo `string`, acontece uma concatenação.  \n  c) NaN, pois ele tentou somar um `number` com um valor `undefined`.\n\nQuestão 03 -\n\n  a) \n  ```ts\n  enum Estados {\n    PI = \"Piauí\",\n    CE = \"Ceará\",\n    MA = \"Maranhão\"\n  }\n\n  for (let estado in Estados) {\n    console.log(estado);\n  }\n\n  /*\n    Piauí\n    Ceará\n    Maranhão\n  */\n  ```\n\n  b)\n  ```ts\n  enum Estados {\n    PI = \"Piauí\",\n    CE = \"Ceará\",\n    MA = \"Maranhão\"\n  }\n\n  Object.keys(Estados).map(indice =\u003e console.log(indice));\n\n  /*\n    PI\n    CE\n    MA\n  */\n  ```\n\n  No transpilação, o `enum` é transformado em um objeto Javascript, então para iterar sobre seus índices podemos utilizar da classe `Object`, juntamente com seu método `keys` que nos retorna um array com as chaves desse objeto. Depois disso, basta usarmos um `forEach` ou um `map` para iterarmos sobre o array gerado. (ps.: também poderíamos armazenar esse array em uma variável qualquer e iterarmos com um `for`, porém seria mais verboso)\n\n\nQuestão 04 - \n\n```ts\nenum DiasSemana {\n  SEGUNDA = \"Segunda\",\n  TERCA = \"Terça\",\n  QUARTA = \"Quarta\",\n  QUINTA = \"Quinta\",\n  SEXTA = \"Sexta\",\n  SABADO = \"Sábado\",\n  DOMINGO = \"Domingo\"\n}\n\nnamespace DiasSemana {\n  function isDiaUtil(dia: DiasSemana): boolean {\n    if (dia === DiasSemana.SABADO || dia === DiasSemana.DOMINGO) {\n      return false;\n    }\n\n    return true;\n  }\n\n  const diaZero: DiasSemana = DiasSemana.DOMINGO;\n  const diaUm: DiasSemana = DiasSemana.SEGUNDA;\n\n  console.log(isDiaUtil(diaZero)); // false\n  console.log(isDiaUtil(diaUm)); // true\n}\n```\n\nQuestão 05 -\n\n```ts\nfunction exibir(...rest: string[]) {\n  console.log(...rest);\n}\n\nexibir(\"a\", \"b\"); // a b\nexibir(\"a\", \"b\", \"c\"); // a b c\nexibir(\"a\", \"b\", \"c\", \"d\"); // a b c d\n```\n\nQuestão 06 - \n```ts\nconst ola = () =\u003e console.log(\"Olá\"); // Olá\n```\n\nQuestão 07 - \n```ts\nconst array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\n\nconst pares = array.filter(numero =\u003e numero % 2 === 0);\n\n// [2, 4, 6, 8, 10, 12, 14]\n```\n\nQuestão 08 -\n\n```ts\nclass MeuNumero {\n  readonly numero: number;\n\n  constructor(numero: number) {\n    this.numero = numero;\n  }\n\n  getInteiro(): number {\n    return Math.trunc(this.numero);\n  }\n\n  getDecimal(): number {\n    return Number((this.numero - Math.floor(this.numero)).toFixed(2);\n  }\n}\n\nconst number = new MeuNumero(24.3);\n\nconsole.log(number.getInteiro()); // 24\nconsole.log(number.getDecimal()); // 0.3\n```\n\nQuestão 09 - \n\n```ts\nclass Transacao {\n  readonly valor: number;\n  readonly desconto: number;\n\n  constructor(valor: number, desconto: number) {\n    this.valor = valor;\n    this.desconto = desconto;\n  }\n\n  calcularDesconto(): number {\n    return this.valor * (1 - this.desconto / 100);\n  }\n\n  getValor(): number {\n    return this.valor;\n  }\n\n  getDesconto(): number {\n    return this.desconto;\n  }\n}\n\nconst transacao = new Transacao(100, 25);\n\nconsole.log(transacao.getValor()); // 100\nconsole.log(transacao.getDesconto()); // 25\nconsole.log(transacao.calcularDesconto()); // 75\n```\n\n## Exercícios do dia 10 de junho\n\nQuestão 01 -  \nResposta: https://github.com/kauecdev/exercicios-typescript/blob/main/app/ts/iteravel/Iteravel.ts\n\nQuestão 02 -  \nResposta: \n- Implementação: https://github.com/kauecdev/exercicios-typescript/tree/main/app/ts/jogo\n- Teste: https://github.com/kauecdev/exercicios-typescript/blob/main/app/ts/app.ts","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauecdev%2Fexercicios-typescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkauecdev%2Fexercicios-typescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauecdev%2Fexercicios-typescript/lists"}