Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions semana15/aula42/exercicio4.ts
Original file line number Diff line number Diff line change
@@ -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
39 changes: 39 additions & 0 deletions semana15/aula42/index.js
Original file line number Diff line number Diff line change
@@ -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
};
128 changes: 128 additions & 0 deletions semana15/aula42/index.ts
Original file line number Diff line number Diff line change
@@ -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;
});
}
11 changes: 11 additions & 0 deletions semana15/aula42/tsconfig.json
Original file line number Diff line number Diff line change
@@ -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. */
}
}
1 change: 1 addition & 0 deletions teste
Submodule teste added at 8daf62