«Gatsby typescript» означает использование TypeScript с инфраструктурой Gatsby, которая представляет собой популярный генератор статических сайтов, созданный с помощью React. Вот несколько методов, которые вы можете использовать при работе с Gatsby и TypeScript, а также примеры кода:
-
Добавление TypeScript в проект Gatsby:
Чтобы добавить TypeScript в проект Gatsby, вы можете выполнить следующие действия:- Установите необходимые зависимости, выполнив следующую команду:
npm install --save gatsby-plugin-typescript typescript @types/react @types/react-dom - Переименуйте файлы
.jsв файлы.tsx, чтобы указать, что они содержат код TypeScript. - Создайте файл
tsconfig.jsonв корне вашего проекта с необходимой конфигурацией TypeScript. Вот пример файлаtsconfig.json:{ "compilerOptions": { "module": "commonjs", "target": "esnext", "lib": ["dom", "esnext"], "jsx": "react", "strict": true, "esModuleInterop": true }, "exclude": ["node_modules", "public", ".cache"] }
- Установите необходимые зависимости, выполнив следующую команду:
-
Определение реквизитов с помощью TypeScript:
При определении реквизитов для ваших компонентов вы можете использовать интерфейсы или типы TypeScript. Вот пример:interface MyComponentProps { name: string; age: number; } const MyComponent: React.FC<MyComponentProps> = ({ name, age }) => { return ( <div> <p>Name: {name}</p> <p>Age: {age}</p> </div> ); }; -
Работа с компонентами страницы Gatsby.
При создании компонентов страницы в Gatsby вы можете определить контекст страницы с помощью TypeScript. Вот пример:import { PageProps } from "gatsby"; interface BlogPostTemplateProps extends PageProps { data: { markdownRemark: { frontmatter: { title: string; }; html: string; }; }; } const BlogPostTemplate: React.FC<BlogPostTemplateProps> = ({ data }) => { const { frontmatter, html } = data.markdownRemark; return ( <div> <h1>{frontmatter.title}</h1> <div dangerouslySetInnerHTML={{ __html: html }} /> </div> ); }; -
Запрос данных с помощью GraphQL:
Gatsby использует GraphQL для запроса данных. При использовании TypeScript вы можете определить форму запрашиваемых данных с помощью интерфейсов или типов. Вот пример:import { graphql, useStaticQuery } from "gatsby"; interface SiteMetadata { title: string; description: string; } interface SiteData { site: { siteMetadata: SiteMetadata; }; } const MyComponent: React.FC = () => { const data: SiteData = useStaticQuery(graphql` query { site { siteMetadata { title description } } } `); return ( <div> <h1>{data.site.siteMetadata.title}</h1> <p>{data.site.siteMetadata.description}</p> </div> ); };