Olá! Na lição anterior, você dominou o processo de duas etapas para usar um componente: importar no frontmatter e utilizar a tag no template. Você sabe como "convocar" um componente para uma página.
Agora, vamos ao coração da reutilização inteligente. O que adianta ter um "carimbo" se não podemos mudar a cor da tinta? Nosso objetivo hoje é validar se as props necessárias estão sendo passadas corretamente para um componente. Este é o conhecimento que permite que você leia o código gerado por uma IA e determine instantaneamente se ele está correto ou quebrado.
1. Hook (A Trava Mental)
- Aprendiz: "Mestre, eu importei meu componente
Card.astrona página inicial, como você ensinou. Eu o usei três vezes para criar três cards. Agora, quero que cada um tenha um título diferente. Tentei<Card titulo="Card 1" />, mas nada apareceu. Em outro, tentei<Card title="Card 2" />, e também não funcionou. Como eu sei o nome certo da 'chave' e como devo passar o 'valor' para que o componente entenda?"
2. Deep Dive (A Solução: O Contrato de Props)
- Mestre: "Excelente pergunta, jovem Padawan. Você está diante do que chamo de 'Contrato do Componente'. Em Astro (e em muitos frameworks modernos), esse contrato é formalizado por uma
interface Props. Dentro de cada arquivo de componente, o criador define um contrato que diz: 'Se você quiser me usar, estas são as propriedades que eu espero receber, com estes nomes exatos e estes tipos de dados.'"
Validar se as props estão corretas é, essencialmente, verificar se o uso do componente está honrando este contrato. O processo tem dois lados:
-
Ler o Contrato (Dentro do Componente): No arquivo do componente (ex:
src/components/Card.astro), você encontrará um blocointerface Props { ... }no frontmatter. Este bloco é a sua fonte da verdade. Ele lista os nomes exatos das props e seus tipos (string,number,boolean, etc.). Uma?ao lado do nome da prop (ex:imagem?: string;) significa que ela é opcional. -
Cumprir o Contrato (Na Página que usa o Componente): Ao usar a tag
<Card />, os atributos que você passa devem corresponder exatamente aos nomes e tipos definidos nainterface Props. Se o contrato diztitle: string, você deve usartitle="...". Se tentartitulo="...", o componente não reconhecerá.
3. O Fazer (Validando o Contrato na Prática)
Vamos detalhar como você, no seu papel de validador de código, pode executar essa verificação.
Passo 1: Leia o Contrato (interface Props)
Sua primeira ação ao validar um componente é abrir seu arquivo e ler a interface Props.
[Astro] Distinguishing Between params and props
Para validar, precisamos primeiro saber ler o 'contrato'. Este artigo mostra de forma clara como um componente define suas props e o erro comum de não o fazer, que é exatamente o que você, como validador, deve procurar.
Concentre-se em duas partes. Primeiro, leia a seção 'Mistake 2: Omitting props typing' para entender por que a ausência de um contrato é um problema. Em seguida, veja o exemplo prático na seção 'Reusable UI Component Example', focando no bloco de código do PostCard.astro. Observe a interface Props no topo – este é o contrato que você precisa verificar.
Passo 2: Verifique a Passagem dos Dados
Uma vez que você conhece o contrato, verifique se ele está sendo cumprido na página que usa o componente. Há uma distinção crucial na sintaxe:
- Strings de texto fixo: Use aspas.
title="Este é um título" - Outros tipos de dados (Booleans, Numbers, Variáveis): Use chaves
{}.
isFeatured={true}
rating={5}
url={umaVariavelJs}
Este vídeo demonstra a passagem de dados e, mais importante, como o TypeScript (a tecnologia por trás da interface Props) transforma seu editor de código em uma ferramenta de validação ativa.
Creating a Flexible Astro Component
Agora, vamos ver a 'passagem de dados' em ação. Este vídeo mostra como diferentes props são passadas para um componente de botão e como o TypeScript ajuda a validar isso em tempo real.
Assista a dois trechos. Primeiro, de 10:09 a 11:44, observe como o autor passa props como type e size e define valores padrão. Segundo, e mais importante, assista de 31:29 a 35:45. Esta parte mostra como criar a interface Props com TypeScript, e como o editor de código (VS Code) passa a oferecer autocompletar e a avisar sobre erros. Este é o seu superpoder de validação.
Passo 3: Use a Ajuda do Editor
Seu editor de código, quando configurado corretamente para Astro, é seu principal aliado na validação.

4. Checkpoint (Dica de IA: Ensinando o Contrato à IA)
- Mestre: "Agora, o passo crucial para você: como garantir que a IA gere código que já respeita o contrato? A resposta está no seu próprio domínio: Context Engineering. Você precisa ensinar os contratos dos seus componentes à IA."
Quando você pede para a IA usar um componente que você criou, você deve incluir a interface Props dele no contexto do seu prompt. Melhor ainda, você pode criar um "Contexto Mestre" para seu projeto.
From prompt to production: Building a landing page with Copilot
Você não precisa digitar o 'contrato' toda vez. Você pode ensinar a IA a entender a estrutura do seu projeto. Este artigo do GitHub mostra como criar um arquivo de instruções para o Copilot, especificando exatamente como os componentes Astro e suas props devem ser estruturados.
Leia as seções 'Improve accuracy with Copilot custom instructions' e 'Component Conventions'. Preste atenção especial ao exemplo de código para 'Astro Components'. Veja como o autor define a interface Props como uma convenção do projeto. Este é um exemplo de 'Contexto Mestre' em ação.
Seu Checklist de Validação de props (Nível Mestre):
- O nome da prop está correto? Compare o atributo na tag (ex:
<Card titulo="..." />) com ainterface Props { title: string; }. Se os nomes não baterem (titulovstitle), está errado. - O tipo do dado está correto? O contrato pede
isFeatured: boolean;. O código gerado foi<Card isFeatured="true" />(errado, é uma string) ou<Card isFeatured={true} />(correto, é um boolean)? - Props obrigatórias foram fornecidas? O contrato tem
title: string(sem?). O código gerado foi<Card />sem a proptitle? Se sim, o site quebrará. - A IA confiou em um valor padrão? O contrato diz
theme?: 'dark' | 'light'e o código defineconst { theme = 'light' } = Astro.props. Se a IA gerar um<Card />sem a proptheme, você sabe que o resultado será o tema'light'.
Conclusão
Você acaba de adquirir a habilidade mais crítica para validar componentes em Astro. Agora você sabe que cada componente tem um contrato e como verificar se ele está sendo cumprido.
-
Key Takeaways:
- A
interface Propsé o contrato de um componente, definindo os nomes e tipos dos dados que ele espera. - Validar
propsé checar se os atributos passados na tag do componente correspondem ao contrato. - Strings de texto fixo usam aspas (
prop="valor"), enquanto outros tipos de dados (booleans, numbers, variáveis) usam chaves (prop={valor}). - Você pode (e deve) ensinar os "contratos" dos seus componentes à sua IA usando Context Engineering para gerar código mais preciso.
- A
-
Próximo Passo: Com o domínio da estrutura (
import/<Tag />) e dos dados (props), a fundação da sua casa está completa. Agora, é hora de pintar as paredes. Na próxima lição, vamos instalar o Tailwind CSS e aprender a usar suas classes de utilidade para estilizar nossos componentes de forma rápida e eficiente.