O que háde novo no TypeScript 4.0
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 dastring
quanto 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ço
noImplicitAny
,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 queremosany
de forma implícita,então compiledor nos daria um erro dizendo que não podemos ter nenhum tipo deany
implícito.Na versão mais atual,o TypeScript consegue inferir,a partir do construtor,que
x
é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áusula
catch
,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 o
noImplicitAny
estava 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 tipo
unknown
um 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 tipounknown
fosse um papel em branco e vocêpudesse pinta lo da cor que quiser.Neste caso,ounknown
pode ser convertido para qualquer tipo.오트라스무단아스
Além de mudanças na linguagem,velocidade de Compileaço com a flag
--noEmitOnError
ficou 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
--incremental
com--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.tsbuildinfo
onde o--incremental
poderá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
--noEmit
juntamente com--incremental
,o que não era permitido antes pois--incremental
precisava 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!
Reference
이 문제에 관하여(O que háde novo no TypeScript 4.0), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/azure/o-que-ha-de-novo-no-typescript-4-0-4pab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)