Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PT-BR] Translating playground-examples files #882

Merged
merged 5 commits into from
Aug 18, 2020
Merged
Show file tree
Hide file tree
Changes from 2 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
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//// { compiler: { ts: "4.0.0-beta" } }

// Na versão 4.0 a tag JSDoc @deprecated foi adicionada ao
// sistema de tipos. Você pode usar @deprecated em qualquer
// lugar que usaria JSDoc atualmente.

interface AccountInfo {
name: string;
gender: string;

/** @deprecated use o campo de gênero no lugar */
sex: "male" | "female";
}

declare const userInfo: AccountInfo;
userInfo.sex;

// TypeScript irá oferecer um aviso não bloqueante quando
// uma propriedade depreciada for acessada, e editores como
// vscode irão usar essa informação em lugares como o
// intellisense, outlines e no seu código.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//// { compiler: { ts: "4.0.0-beta" } }

// Logical Operators e Assignment são novas funcionalidades do
// JavaScript para 2020. Esses são um conjunto de operadores novos
// que editam um objeto JavaScript.

// Seu objetivo é reutilizar o conceito de operadores
// matemáticos (Ex: += -= *=) porém usando lógica.

interface User {
id?: number
name: string
location: {
postalCode?: string
}
}

function updateUser(user: User) {
// Pode-se trocar esse código:
if (!user.id) user.id = 1

// Ou esse código:
user.id = user.id || 1

// Por esse código:
user.id ||= 1
}

// Esses conjuntos de operadores podem lidar com encadeamento profundo
// podendo poupar uma boa quantidade de código repetido.

declare const user: User
user.location.postalCode ||= "90210"

// São três novos operadores:
//
// ||= mostrado acima
// &&= que usa a lógica do 'and' ao invés da 'or'
// ??= que se baseia no exemplo:nullish-coalescing para oferecer
// uma versão mais rigorosa do || que usa === no lugar.

// Para mais informações da proposta, veja:
// https://github.com/tc39/proposal-logical-assignment
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//// { compiler: { ts: "4.0.0-beta" } }

// # Nullish Coalescing
//
// Esse é o novo operador `??` com o intuito de ampliar
// o uso normal do `||` da mesma maneira que `===` amplia `==`
// para uma forma mais rígida de igualidade.
//
// Para entender, vamos ver como o || funciona:

const response = {
nullValue: null,
headerText: "",
animationDuration: 0,
height: 400,
showSplashScreen: false,
} as const;

const undefinedValue = response.undefinedValue || "some other default";
// Seria: 'some other default'

const nullValue = response.nullValue || "some other default";

// Esses dois exemplos funcionam de maneira similar na maioria
// das linguagens. Como ferramenta || é muito bom em padronizar coisas
// mas o falsy checks do Javascript pode te surpreender com alguns
// valores simples:

// Potencialmente indesejado. '' é falsy, resultado: 'Hello, world!'
const headerText = response.headerText || "Hello, world!";

// Potencialmente indesejado. 0 é falsy, resultado: 300
const animationDuration = response.animationDuration || 300;

// Potencialmente indesejado. false é falsy, resultado: true
const showSplashScreen = response.showSplashScreen || true;

// Alterando para usar ?? no lugar, então a igualdade === é usada
// para comparar ambos os lados:

const emptyHeaderText = response.headerText ?? "Hello, world!";
const zeroAnimationDuration = response.animationDuration ?? 300;
const skipSplashScreen = response.showSplashScreen ?? true;