From c58670b1d6271145ad674b415fd4ee941581e23b Mon Sep 17 00:00:00 2001 From: CarlosDaniel396 Date: Wed, 24 Nov 2021 01:11:05 -0400 Subject: [PATCH] typescript --- semana15/aula42/exercicio4.ts | 10 +++ semana15/aula42/index.js | 39 +++++++++++ semana15/aula42/index.ts | 128 ++++++++++++++++++++++++++++++++++ semana15/aula42/tsconfig.json | 11 +++ teste | 1 + 5 files changed, 189 insertions(+) create mode 100644 semana15/aula42/exercicio4.ts create mode 100644 semana15/aula42/index.js create mode 100644 semana15/aula42/index.ts create mode 100644 semana15/aula42/tsconfig.json create mode 160000 teste diff --git a/semana15/aula42/exercicio4.ts b/semana15/aula42/exercicio4.ts new file mode 100644 index 0000000..f3516a5 --- /dev/null +++ b/semana15/aula42/exercicio4.ts @@ -0,0 +1,10 @@ +// a) Como você faria, já com a extensão instalada, para gerar um arquivo javascript a partir do arquivo typescript com o código abaixo? Utilizaria os comandos tsc nomeDoArq.ts e node nomeDoArq.js + +//b) Precisaria mudar o diretório para /src + +//C) Rodando o typescript globalmente +// e configurando-o o tsconfig para entrar na pasta rootDir +// e sair na outDir + +//D) Notei diferença na versão do es, no root dir e no out dir +// O arquivo vem com a configuração de vários tópicos diff --git a/semana15/aula42/index.js b/semana15/aula42/index.js new file mode 100644 index 0000000..ca7651c --- /dev/null +++ b/semana15/aula42/index.js @@ -0,0 +1,39 @@ +//1) +//a) Crie uma variável minhaString do tipo string e atribua um valor a ela. Tente atribuir um número a esta variável. O que acontece? Ocorre um erro no código +var myString = "ABC"; +//b) Crie uma variável meuNumero do tipo number e atribua um valor numérico. Como podemos fazer para que essa variável também aceite strings? +var myNumber = 5; +//c) Agora crie um novo objeto. Este objeto é uma pessoa, e deve possuir três propriedades: +// `nome`, que é uma string; +// `idade`, que é um número; +// `corFavorita`, que é uma string. +var person = { + name: "Carlão", + age: 21, + favoriteColor: "Azul" +}; +// Crie mais três objetos, que também precisam ter apenas os campos definidos acima. Crie um tipo Pessoa para garantir que todos os objetos tenham os mesmos campos. +// D) Crie mais três objetos, que também precisam ter apenas os campos definidos acima. Crie um tipo Pessoa para garantir que todos os objetos tenham os mesmos campos. +var RainbowClass; +(function (RainbowClass) { + RainbowClass["ORANGE"] = "Orange"; + RainbowClass["RED"] = "Red"; + RainbowClass["PURPLE"] = "Purple"; + RainbowClass["YELLOW"] = "Yellow"; + RainbowClass["GREEN"] = "Green"; +})(RainbowClass || (RainbowClass = {})); +var firstPerson = { + name: "Lucas", + age: 29, + favoriteColor: RainbowClass.YELLOW +}; +var secondPerson = { + name: "Pablo", + age: 32, + favoriteColor: RainbowClass.GREEN +}; +var thirdPerson = { + name: "João", + age: 56, + favoriteColor: RainbowClass.YELLOW +}; diff --git a/semana15/aula42/index.ts b/semana15/aula42/index.ts new file mode 100644 index 0000000..8cf6ece --- /dev/null +++ b/semana15/aula42/index.ts @@ -0,0 +1,128 @@ +//1) +//a) Crie uma variável minhaString do tipo string e atribua um valor a ela. Tente atribuir um número a esta variável. O que acontece? Ocorre um erro no código +const myString: string = "ABC"; + +//b) Crie uma variável meuNumero do tipo number e atribua um valor numérico. Como podemos fazer para que essa variável também aceite strings? +let myNumber: string | number = 5; + +//c) Agora crie um novo objeto. Este objeto é uma pessoa, e deve possuir três propriedades: + +// `nome`, que é uma string; + +// `idade`, que é um número; + +// `corFavorita`, que é uma string. +const person: { name: string; age: number; favoriteColor: string } = { + name: "Carlão", + age: 21, + favoriteColor: "Azul", +}; + +// Crie mais três objetos, que também precisam ter apenas os campos definidos acima. Crie um tipo Pessoa para garantir que todos os objetos tenham os mesmos campos. + +// D) Crie mais três objetos, que também precisam ter apenas os campos definidos acima. Crie um tipo Pessoa para garantir que todos os objetos tenham os mesmos campos. + +enum RainbowClass { + ORANGE = "Orange", + RED = "Red", + PURPLE = "Purple", + YELLOW = "Yellow", + GREEN = "Green", +} +type Person = { + name: string; + age: number; + favoriteColor: RainbowClass; +}; +const firstPerson: Person = { + name: "Lucas", + age: 29, + favoriteColor: RainbowClass.YELLOW, +}; + +const secondPerson: Person = { + name: "Pablo", + age: 32, + favoriteColor: RainbowClass.GREEN, +}; + +const thirdPerson: Person = { + name: "João", + age: 56, + favoriteColor: RainbowClass.YELLOW, +}; + +//2) Observe a função a seguir, escrita em JavaScript: +type Estatisticas = { + maior: number; + menor: number; + media: number; +}; +function obterEstatisticas(numeros: number[]): Estatisticas { + const numerosOrdenados = numeros.sort((a, b) => a - b); + + let soma = 0; + + for (let num of numeros) { + soma += num; + } + + const estatisticas = { + maior: numerosOrdenados[numeros.length - 1], + menor: numerosOrdenados[0], + media: soma / numeros.length, + }; + + return estatisticas; +} +// c) Crie um *type* para representar uma **amostra** de dados, isto é, um objeto com as chaves **numeros** e **obterEstatisticas**. Abaixo, temos um exemplo de objeto desse tipo, declarado em JavaScript: +type AmostraDeIdades = { + numeros: number[]; + obterEstatisticas: (number: number[]) => Estatisticas; +}; + +const amostraDeIdades: AmostraDeIdades = { + numeros: [21, 18, 65, 44, 15, 18], + obterEstatisticas, +}; + +//3) Considere que você esteja implementando uma rede social composta por posts de usuários. Cada um dos posts possui: um autor e um texto. + +// Observe o seguinte array de posts: + +// a) Copie o código acima para um arquivo .ts. Depois, crie um *type* para representar um post e utilize-o para fazer a tipagem do array posts. +type Post = { + autor: string; + texto: string; +}; + +const posts: Post[] = [ + { + autor: "Alvo Dumbledore", + texto: "Não vale a pena viver sonhando e se esquecer de viver", + }, + { + autor: "Severo Snape", + texto: "Menos 10 pontos para Grifinória!", + }, + { + autor: "Hermione Granger", + texto: "É levi-ô-sa, não levio-sá!", + }, + { + autor: "Dobby", + texto: "Dobby é um elfo livre!", + }, + { + autor: "Lord Voldemort", + texto: "Avada Kedavra!", + }, +]; + +// b) Observe abaixo a função buscarPostsPorAutor(), escrita em JavasScript: + +function buscarPostsPorAutor(posts: Post[], autorInformado: string) { + return posts.filter((post) => { + return post.autor === autorInformado; + }); +} diff --git a/semana15/aula42/tsconfig.json b/semana15/aula42/tsconfig.json new file mode 100644 index 0000000..4b87342 --- /dev/null +++ b/semana15/aula42/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es6" /* Specify ECMAScript target version */, + "module": "commonjs" /* Specify module code generation */, + "sourceMap": true /* Generates corresponding '.map' file. */, + "outDir": "./build" /* Redirect output structure to the directory. */, + "rootDir": "./src" /* Specify the root directory of input files. */, + "removeComments": true /* Do not emit comments to output. */, + "noImplicitAny": true /* Raise error on declarations with an implied 'any' type. */ + } +} diff --git a/teste b/teste new file mode 160000 index 0000000..8daf620 --- /dev/null +++ b/teste @@ -0,0 +1 @@ +Subproject commit 8daf620c95f68190d39f7502f57b7c5a02f1cda7