Asserções de Tipo
Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy — lição 68 de 73.
Às vezes, o TypeScript não tem informações suficientes para determinar o tipo exato de um valor, mas você, como desenvolvedor, sabe mais sobre o que esse valor realmente é. As asserções de tipo (Type assertions) permitem que você diga ao TypeScript "confie em mim, eu sei que este valor é deste tipo específico".
O TypeScript fornece duas sintaxes para asserções de tipo. A sintaxe as é a abordagem mais comum:
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Você também pode usar a sintaxe de colchetes angulares (angle-bracket), embora seja menos comum no TypeScript moderno:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilCrie uma função que processe dados de uma simulação de API externa. Você trabalhará com valores do tipo unknown e usará asserções de tipo para acessar suas propriedades com segurança.
Crie uma variável apiResponse do tipo unknown e atribua a ela a seguinte string JSON:
{"userId": 42, "username": "alice_dev", "isActive": true}Crie uma função chamada processUserData que:
- Recebe um parâmetro
datado tipounknown - Usa uma asserção de tipo para tratar
datacomo umastring - Analisa a string JSON usando
JSON.parse() - Usa outra asserção de tipo para tratar o resultado analisado como um objeto com as propriedades
userId(number),username(string) eisActive(boolean) - Retorna uma string formatada:
"User [userId]: [username] (Active: [isActive])" - Possui um tipo de retorno explícito de
string
Crie dados de teste adicionais:
- Crie
secondApiResponsedo tipounknowncom a string JSON:{"userId": 15, "username": "bob_admin", "isActive": false} - Crie
thirdApiResponsedo tipounknowncom a string JSON:{"userId": 99, "username": "charlie_user", "isActive": true}
Teste sua função e imprima os seguintes resultados:
- Chame
processUserDatacomapiResponsee imprima o resultado - Chame
processUserDatacomsecondApiResponsee imprima o resultado - Chame
processUserDatacomthirdApiResponsee imprima o resultado
Folha de consulta
Asserções de tipo permitem que você informe ao TypeScript o tipo específico de um valor quando você sabe mais do que o TypeScript consegue inferir.
Use a sintaxe as (mais comum):
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Sintaxe alternativa de colchetes angulares (angle-bracket):
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Experimente você mesmo
// Cria as variáveis de resposta da API
const apiResponse: unknown = '{"userId": 42, "username": "alice_dev", "isActive": true}';
const secondApiResponse: unknown = '{"userId": 15, "username": "bob_admin", "isActive": false}';
const thirdApiResponse: unknown = '{"userId": 99, "username": "charlie_user", "isActive": true}';
// TODO: Crie a função processUserData aqui
// Teste a função e imprima os resultados
console.log(processUserData(apiResponse));
console.log(processUserData(secondApiResponse));
console.log(processUserData(thirdApiResponse));Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Introdução ao TypeScript
1Primeiros Passos com TS
O que é TypeScript?Por que usar TypeScript?Seu Primeiro Código TypeScriptProcesso de Compilação e ErrosRecapitulação: Introdução ao TS4Trabalhando com Funções
Tipagem de Parâmetros e RetornosTipagem de Arrow FunctionsO Tipo de Retorno 'void'Parâmetros Opcionais com '?'Valores Padrão de ParâmetrosTipagem de Rest ParametersDefinindo Tipos de FunçõesRecapitulação: Criando Funções Tipadas2Tipos Principais
Tipos Básicos: str, num, booleanO Tipo 'any': Válvula de EscapeO Tipo 'unknown'Trabalhando com 'null' e 'undef'Inferência de Tipo na PráticaAnotações de Tipo ExplícitasRecapitulação: Prática de Tipos Principais5Tipos: Aliases, Uniões e Interseções
Aliases de Tipos para PrimitivosTipos de União ('|')Trabalhando com Tipos de UniãoTipos LiteraisTipos de Interseção ('&')Combinando Aliases de TiposRecapitulação: Combinações Avançadas de Tipos8Enums
O que é um Enum Numérico?Usando Enums NuméricosO que é um Enum de String?Usando Enums de StringEnums HeterogêneosRecapitulação: Usando Enums11Tópicos Avançados
Asserções de TipoType Guards: in & instanceofO Tipo 'never'Tipos Anuláveis ('strictNull')Assinaturas de Índice para ObjetosRecapitulação: Refinando Tipos3Estrutura de Dados: Arrays e Tuplas
Arrays TipadosModificador 'readonly' para ArraysO que é uma Tupla?Declarando e Acessando TuplasDesestruturando TuplasTuplas ReadonlyArrays Tipados MultidimensionaisSpread Operator com ArraysRecapitulação: Arrays e Tuplas