サークルサイトの再構築をするにあたり、Typescriptを導入してみました。
「最近の記事」コンポーネント
GraphQLで取得したデータに型を指定する
interface StaticQueryProps { allMarkdownRemark: { edges: Edge[] } } interface Edge { node: { frontmatter: { date: string title: string } id: string } } const recentPost: React.FC = () => ( <StaticQuery query={graphql` query RecentPostQuery { allMarkdownRemark(limit: 4, sort: { fields: frontmatter___date, order: DESC }) { edges { node { frontmatter { date(formatString: "YYYY/MM/DD") title } id } } } } `} render={(data: StaticQueryProps) => data.allMarkdownRemark.edges.map(({ node }) => ( <div key={node.id}>{node.frontmatter.title}</div> // component )) } /> )