Skip to content

Commit

Permalink
Merge pull request #977 from microsoft/asdasadasd
Browse files Browse the repository at this point in the history
Replace #936
  • Loading branch information
Orta Therox authored Aug 28, 2020
2 parents 5874793 + a8f9c01 commit c1b03b1
Show file tree
Hide file tree
Showing 7 changed files with 175 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
// número que você pode representar enquanto
// você está escrevendo em Javascript?

const maxHighValue = 9007199254740991;
const maxLowValue = -9007199254740991;
const valorMaximo = 9007199254740991;
const valorMinimo = -9007199254740991;

// Se você ultrapassar um ou mais desses números
// então você entrará em um território perigoso

const oneOverMax = 9007199254740992;
const oneBelowMin = -9007199254740992;
const umAcimaDoMaximo = 9007199254740992;
const umAbaixoDoMinimo = -9007199254740992;

// A solução para lidar com números desse tamanho
// é converter esses números em BigInts ao invés
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
// Você pode experimentar isso destacando o erro abaixo
// e optando por executar o _Quick Fix_ (Correção rápida).

const displayName = "Andrew";
const nomeDeExibicao = "Andrew";

displayName = "Andrea";
nomeDeExibicao = "Andrea";
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,19 @@ function pushNumber(arr) {
// Deduzir uma Promise

function awaitPromise(promise) {
promise.then(value => console.log(value));
promise.then(valor => console.log(valor));
}

// Deduzir uma função, e o que ela retornará:

function inferAny(app) {
const result = app.use("hi");
const result = app.use("oi");
return result;
}

// Deduzir um array de strings porquê uma
// string foi adicionada:

function insertString(names) {
names[1] = "hello";
function insertString(nomes) {
nomes[1] = "olá";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//// { compiler: { ts: "4.0.0-beta" } }
//

// No 4.0 nós usamos um fluxo de análise para
// inferir o potencial tipo de propriedades de uma
// classe com base nos valores configurados
// durante sua construção

class UserAccount {
id; // O tipo é inferido como string | número
constructor(isAdmin: boolean) {
if (isAdmin) {
this.id = "admin";
} else {
this.id = 0;
}
}
}

// Nas versões anteriores do TypeScript, `id`
// poderia ser classificado como `any` (qualquer)
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//// { compiler: { ts: "4.0.0-beta" } }
// Tuplas são vetores que sua ordem é importante para a tipagem,
// você pode aprender mais sobre eles no exemplo:tuplas

// No TypeScript 3.9, o tipo das uma tupla ganha a abilidade de dar
// nome para diferentes partes do array.


// Por Exemplo, você usou para escreve uma localização de Latitude, Longintude via tupla:

type antigaLocalizacao = [number, number]

const locations: antigaLocalizacao[] = [
[40.7144, -74.006],
[53.6458, -1.785]
]

// With 4.0, you can write:

// Sabendo qual a Latitude e Longitude são ambiguas, então você
// saberá mais como terão que ser chamadas as tuplas LatLong.

// Com o 4.0 você pode escrever:

type NovaLocalizacao = [latitude: number, longitude: number]

const novasLocalizacoes: NovaLocalizacao[] = [
[52.3702, 4.8952],
[53.3498, -6.2603]
]

// Os nomes agora mostram ao editor quando você passar o mouse
// por cima, o 0 e 1 no fim da próxima linha:
const primeiraLatitude = novasLocalizacoes[0][0]
const primeiraLogintude = novasLocalizacoes[0][1]

// Isso poder parecer um pouco decepcionante, o objetivo
// principal é garantir que a informação não será perdida durante
// o trabalho com os sistemas de tipos. Por exemplo, quando extraido
// os parametros de uma função usando o Parâmetro tipo:

function centroDoMapa(lng: number, lat: number) {}

// No 4.0, são mantidos os lng e lat
type ParametrosDoCentroDoMapa = Parameters<typeof centroDoMapa>

// Na versão 3.9, isso teria que ser feito assim
type AntigosParametrosDoCentroDoMapa = [number, number]

// Fazendo com que uma manipulação de tipos mais complexa
// leve a perdas de informação
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//// { compiler: { ts: "4.0.0-beta" } }

// Como o Javascript permite o `throw` de qualquer valor,
// o TypeScript não permite a declaração um tipo de erro.

try {
// ..
} catch (e) {}

// Historicamente, isso significava que o `e` no catch
// poderia ter qualquer valor. Isso permitia liberdade para
// acesso arbitrário de qualquer propriedade. Com o 4.0, nós afrouxamos
// as restrições do tipo configurado no cláusula catch para permitir ambos
// `qualquer`(any) e `desconhecido` (unknown).

// Mesmo comportamento com:
try {
// ..
} catch (e: any) {
e.stack;
}

// Comportamento explícito com desconhecido:

try {
// ..
} catch (e: unknown) {

// Você não pode usar `e` até que o sistema
// de tipos aprenda o que é. Para mais informação
// a respeito, veja o exemplo:
// example:unknown-and-never

e.stack;

if (e instanceof SyntaxError) {
e.stack;
}
}
54 changes: 54 additions & 0 deletions packages/ts-twoslasher/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,58 @@ Turns to:
> }
> ```
#### `importsModules.ts`
```ts
// @filename: Component.tsx
import React from "react"
export function Hello() {
return (
<div>
<h1>Hello World</h1>
</div>
)
}
// @filename: index.ts
import { Hello } from "./Component"
console.log(Hello)
```
Turns to:
> ```ts
> // @filename: Component.tsx
> import React from "react"
>
> export function Hello() {
> return (
> <div>
> <h1>Hello World</h1>
> </div>
> )
> }
>
> // @filename: index.ts
> import { Hello } from "./Component"
> console.log(Hello)
> ```
> With:
> ```json
> {
> "code": "See above",
> "extension": "ts",
> "highlights": [],
> "queries": [],
> "staticQuickInfos": "[ 10 items ]",
> "errors": [],
> "playgroundURL": "https://www.typescriptlang.org/play/#code/PTAEAEDMEsBsFMB2BDAtvAXKAwge1QA66JIAuAdKQM4AeAUNIbgE6mgBK8yAxm5M-lAAiZl15C6deDSKtQkAK6Je0YqAAS8WLFwAKAJSgA3nVChRpBc0Shdps6AA8AE2gA3AHz2HTgBYBGD01tXFAAdRZYZ0dgAK8fGNdPe306AF9JEAgYBBR0LGhEZ2lKKgYmOSMNLR1QNPkBVGFyYDwmEkRSCW5iKlwEch0Ac11gnVSgA"
> }
> ```
#### `query.ts`
```ts
Expand Down Expand Up @@ -718,6 +770,8 @@ export interface TwoSlashOptions {
* web then you'll need this to set up your lib *.d.ts files. If missing, it will use your fs.
*/
fsMap?: Map<string, string>
/** The cwd for the folder which the virtual fs should be overlaid on top of when using local fs, opts to process.cwd() if not present */
vfsRoot?: string
}
```
Expand Down

0 comments on commit c1b03b1

Please sign in to comment.