Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
http://localhost:3000/
http://localhost:3001/ <-UI DE CONFIG
OU
___________________________________________________________________________________
ENVIAR TEXTO PARA O CONSOLE
___________________________________________________________________________________
LET vs VAR
LET = BLOCK SCOPED
VAR = GLOBAL SCOPED
______________________________________________________________________
USE STRICT
“use strict”; //Usado no topo do programa: é mais rigoroso com a programação.
______________________________________________________________________
To enable the setting globally across your entire project, add the following line to your User Preferences (⌘ + ,)...
"javascript.implicitProjectConfig.checkJs": true
Drop a .tsconfig file in your project to control specific TypeScript checking features.
JAVASCRIPT
//Strings //array
let myName = 'Marcio'; let hobbies = ["cooking","sports"];
//let myName = 35; console.log(typeof(hobbies));
//Boolean //enum
let hasHobbies = true; enum Color {
//let hasHobbies = 1 Gray,
Green,
//assign Types any Blue=100,
let qqRealAge; Yellow
qqRealAge = 27; }
qqRealAge = '27'; let myColor: Color = Color.Green;
console.log(myColor); //prints 1
// ou //
console.log(Color.Blue); //prints 100
let anyRealAge: any; console.log(Color.Yellow) //prints 101 -> ele
anyRealAge = 27; continua a contagem!!!
anyRealAge = '27';
//any type
let myRealAge: number;
let car: any = "BMW";
myRealAge = 27;
console.log(car);
//myRealAge = '27';
car = {brand: "BMW", series: 3};
let herRealAge: number = 34;
console.log(car);
//ternary operator
CONDITION ? YES : NO;
ex1: age > 18? drink=’beer’ : drink=’juice’;
ex2: name = sex = “male” ? ‘John’ : ‘Mary’;
//functions
function returnMyName(): string {
return myName; //retorna o "Marcio" definido anteriormente na linha 2.
}
console.log(returnMyName())
//void
function sayHello(): void {
console.log("Hello!");
}
//argument types
function multiply(value1: number,value2: number): number {
return value1*value2;
}
console.log( multiply(10,3));
FUNCTIONS ARE OBJECTS!!!
//FUNCTIONS types sintaxe: let nome: (n1: type, n2: type, ...) => type;
// nome = função já existente;
let meuMultiply;
meuMultiply = sayHello;
meuMultiply();
meuMultiply = multiply;
console.log(meuMultiply(3,7));
let myMultiply: (val1: number, val2: number) => number; //pode ser val1, a,
blabla,... não importa!!!
//myMultiply = sayHello; //vai dar erro pois espera um number mas o sayHello é
void.
//myMultiply(); //
myMultiply = multiply;
console.log(myMultiply(4,7));
console.log( "----------------------------------")
//ARRAYS
sorted=tabela.sort(); // [10,12,15,19,3,42,8]
sorted2=tabela.sort(function(x,y){
return x-y;
}; //[3,8,10,12,15,19,42]
superSorted=tabela.sort(function(x,y){
return y-x;
}; //[42,19,15,12,10,8,3]
supersorted.reverse(); //[3,8,10,12,15,19,42]
//OBJECTS sintaxe:
let nome: {var1: type, var2: type, ...} = {var1:valor1, var2: valor2, ...};
let usoData : {
name: "Marcio",
age: 47
}
// usoData = {
// a:"Hello",
// b: 22 //Não vai dar certo pq. não pode ser a e b. Tem que ser name
e age.
// };
let userData: { name: string, age: number} = {
name: "Max", //pode já inicializar o objeto com valores default!
age: 27
}
userData = {
name: "Will",
age: 48
};
userData.age=135;
console.log(userData.name);
console.log(userData.age);
//complex object
let complex : {data: number[], output:(all:boolean)=> number[]}={
data:[100, 3.99, 10],
output: function (all: boolean): number[] {
return this.data;
}
};
OBJECTS
//FACTORY FUNCTION (camelNotation)
function createCircle(radius){
return {
radius, //ou radius: radius,
draw() {
console.log(‘draw’);
}
};
}
const myCircle = createCircle(1);
ENTRIES:
for (let entry of Object.entries(objeto)) // Object.entries(circle) gera um array com
as keys e properties do objeto
console.log(entry);
Ou:
const copia3 = __assign({},circle);
Ou ainda:
const copia={...objeto}; //SPREAD OPERATOR
TEMPLATE LITERALS (use o “ ` “ como aspas!)
var name = `John`;
var texto = `Olá, ${name}! “Template Literals”.`;
//type alias
type Complex = {data: number[], output:(all:boolean)=> number[]};
let complex2 : Complex ={
data:[100, 3.99, 10],
output: function(all: boolean): number[]{
return this.data;
}
};
//union types
//never type - pode servir para marcar um ponto no código, com um erro, por exemplo.
function neverReturns():never {
throw new Error('ex:É um Erro!!!');
};
neverReturns(); //gera o erro.
Quando usada em uma função, aponta para o global(se em NODE) ou para o window(se em
WEB). Exceto em “Arrow Functions =>, que assumem o this como sendo o objeto.
.bind (muda o “EXCUTION CONTEXT” do objeto) ou PASSA A FUNCIONAR COMO A FUNÇÃO BINDed.
var person = {
firstname:’John’,
Lastname:’Doe’,
getFullName: function(){
var fullname = this.firstname + ‘ ‘ + ‘this.lastname;
return fullname;
}
logPersonName(‘en’, ‘es’);
logName.call(person, ‘en’,’es’); //tá mandando funcionar como a “person”
logName.apply (person, [‘en’,’es’]); //difere de CALL pq tem q ser um ARRAY
CALLBACK FUNCTIONS
const video = {
title: ‘a’,
tags: [‘a’,’b’,’c’],
showTags() {
this.tags.forEach(function(tag) { //logs cada item de tags
console.log(this, tag);
});
}
};
//”THIS” vai ser o objeto WINDOW, já que ele está dentro de uma função (observe que
não é um método, mas sim uma callback function!) O único método aqui é o SHOWTAGS!
// key: value, //
firstname: 'Mary',
isAProgrammer: true
}
console.log(JSON.stringify(objectLiteral));
console.log(jsonValue);