O que háde novo no TypeScript 4.0

No dia 20 de Agosto de 2020,o TypeScript anunciou a sua mais nova versão,a 4.0!Então,neste artigo,me preparei para apresentar para vocès asúltimas mudanças e novidades da versão!
Apesar de ser uma major version as alteraões que foram introductzidas nese release nãos muito substanciais e,pode se acalmar,não temos nenhuma breaking change:D

툴프라스 노메다스


Para começar,temos a resoluço de um problem a relatimente antigo do superset mais amado por todos.Quando temos tuplas(elementos que são compostos de pares de dados),antigamente tínhamos uma definião como esta:
function tupla (...args: [string, number]) {}
Veja que não temos nenhum nome para nenhum dos par–metros que ocupam tanto a posião dastringquanto a posião donumber.No que diz respeitoáinferência de tipos eáchecagem No geral,isso não faz diferença alguma,masémuito til quando estamos documentando nosso código.
Por conta da checagem de tipos, funão front seria traduzida para algo semelhante a isto:
function tupla (args_0: string, args_1: number) {}
Queéessencialmente a mesma coisa,porém,na hora de fazermos o código,o nosso intellisense–Queéuma das grandes vantagens do uso do TypeScript,no geral–vai nos dar uma nomenclatura Que não ajuda ninguém,como podemos ver no gif abaixo
용어como args\u 0 e args\u 1
Agora,com a versão 4.0,podemos incluir nomes nas nossas tuplas para que elas sejam nomeadas durante o intellisense:
function tupla (...args: [nome: string, idade: number]) {}
E ai conseguimos um resultado como o seguinte:
Conseguimos ver a Nomencatura de cada par–metro
Éimportant notar que:Se vocèestánomeando qualquer elemento de uma tupla,vocèprecisa nomear os dois.Caso contrário vocêteráum erro:
type Segment = [first: string, number];
//                             ~~~~~~
// error! Tuple members must all have names or all not have names.

한 측의 소유권을 추단해 내다


A partir de agora,quando configuramos o TypeScript com A configuraçonoImplicitAny,podemos usar A análise de fluxo queéfeita no tempo de compilaço para determinar os tipos de propriedades em classes de acordo com as atribuiçes em seu construtor.
class Test {    
   public x   
   constructor (b: boolean){      
     this.x = 42
     if (b) this.x = 'olá'
   }
}
Em versões anteriores,como não estamos specificando o tipo da propriedade,isto faria o compiledor atribuir o tipoany,mas como checamos que não queremosanyde forma implícita,então compiledor nos daria um erro dizendo que não podemos ter nenhum tipo deanyimplícito.
Na versão mais atual,o TypeScript consegue inferir,a partir do construtor,quexédo tipostring | number.

단락 em Operados compostos


Poucas pessoas conhecem esta functionalidade do JavaScript,mas muitas outras linguagens também possuem o queéchamado de composite assignment operator,ou,operadors de atribuiço compostos.
O que eles fazeméresolver a expressãO do lado direito e atribuir O valor para a variável do lado esquerdo.Os mais famosos s são Os operadores algébricos:
let b += 2
let c /= 3
Todos funcionam muito bem e existem para maioria das operaçes lógicas.Porém,de acordo como próprio time do TS,existem três notáveis exceçesáesta rega.Os operadores lógicos&&,||e o operador de coalescencia nula??.No 4.0 temos a adição de três novos Operadors:
a ||= b
// que é igual a
a || (a = b)
오페라 배우&&=e??=.

알 수 없는com 캡처


Desde os primórdios do TypeScript,sempre que tínhamos uma cláusulacatch,o valor do argumento de erro era sempre definido comoany,pois não havia como saber qual era o tipo de returno.
Portanto,o TypeScript simplesmente não checava os tipos destes par–metros,mesmo se onoImplicitAnyestava ativo.
try {
  throw 'Alguma coisa'
} catch (err) { // Este 'err' é Any
  console.log(err.foo()) // não vai dar erro
}
Isso era pouco seguro uma vez que podíamos chamar qualquer funão dentro docatch.A partir do 4.0,o TS vai tipar os erros comounknown.
O tipounknownum tipo specificiante voltado para tipar coisas que nãO sabemos O que sãO.Portanto elas precisam de um type casting antes de poderem ser usadas.Écomo se um dado tipounknownfosse um papel em branco e vocêpudesse pinta lo da cor que quiser.Neste caso,ounknownpode ser convertido para qualquer tipo.

오트라스무단아스


Além de mudanças na linguagem,velocidade de Compileaço com a flag--noEmitOnErrorficou mais rápida quando usamos junto com a flag--incremental.Oque a última flag fazé dar a possibilidade de compilearmos uma aplica, Omais rapidamente a partir de uma outra aplica, Oque j á foi compileada, chamada compilea, O 증가량.
Quando utilizávamos--incrementalcom--noEmitOnError,se compileássemos um programa pela primeira vez e ele der um erro,isso signific que ele não emitira nenhuma saída,portanto nãháum arquivo.tsbuildinfoonde o--incrementalpoderáolhar,o que tornava tudo super devagar.
Na versão 4.0 este problema foi corrigido.E、 além disso,agoraépermitido o uso da flag--noEmitjuntamente com--incremental,o que não era permitido antes pois--incrementalprecisava da emissão de um.tsbuildinfo.
Algumas outras mudanças menores foram feitas no que diz respeitoáediço e editores no geral.Vocêpode conferir는 Postagem do 블로그aqui입니다.

결론


E fechamos por aqui a nossa atualizaço deste superset sensacional!Lembrando queestamos precisando de ajuda na tradução para português no site do TypeScript,nos ajude a traduzir!
Nãse esqueça de se inscrever nanewsletterpara mais conteúdo exclusive o e notícias semanais!Curta e Comparitile seus 피드백 nos coment á rios!

좋은 웹페이지 즐겨찾기