ZEIT社が開発しているReact製のフレームワークNext.jsですが、現在v.8.1.1のカナリー版がリリースされています。
v.9では様々な変更が入っていますが、個人的に注目しているのはTypeScriptが標準で利用可能になった点です。そこで備忘録を兼ねて型の書き方を整理してみました。
カナリー版の段階で書いた記事を更新しました。
@zeit/next-typescript
パッケージが不要になりました。
@types/next
のものを使っていましたが、next.jsの本体側で型定義を持つようになりました。next
だけインストールすればTypeScriptが利用できるようになります。Add Typescript compilation by timneutkens · Pull Request #7110 · zeit/next.js
Add automatic TypeScript setup by ijjk · Pull Request #7125 · zeit/next.js
Add .d.ts for next-server by timneutkens · Pull Request #7133 · zeit/next.js
Add declaration files by lfades · Pull Request #7118 · zeit/next.js
Add types for getInitialProps by lfades · Pull Request #7162 · zeit/next.js
pages/
以下に配置するとルーティングと対応するコンポーネントの例です。
import { NextPage } from 'next'
interface Props {
books: Book[]
}
const Index : NextPage<Props> = () => {
return <div>
<p>Hello World</p>
</div>
}
index.getInitialProps = async ({req}) => {
// do something
}
Hooks以前のクラスコンポーネントでの書き方
class Index extends React.Component<Props> {
static getInitialProps = async ({ query }: NextPageContext) => {
}
render {
return <div/>
}
)
withRouterを使ってコンポーネント内でルーターを触るパターンです。
import { NextPage } from 'next'
import { withRouter } from 'next/router'
import { WithRouterProps } from 'next/dist/client/with-router'
interface Props {
books: Book[]
}
const Index : NextPage<WithRouterProps & Props> = () => {
return <div>
<p>Hello World</p>
</div>
}
index.getInitialProps = async ({req}) => {
// do something
}
export default withRouter(Index)
ここ最近、Web技術を利用した画像生成に興味があります。本記事では、日本語における表現の一種である縦書きに焦点を当て、Web技術を使った縦書きを含む画像生成方法についての調査をまとめました。 > 現
追記(2022/12/29): 問い合わせに対応する窓口をTwitterに統一したいので、フォームページは削除しました。 当ブログは静的サイトホスティングサービスのNetlifyでホスティングされ
毎年10月に開催されるHacktoberfestに参加しました。このイベントはOSSへの貢献を行い、期間中に規定数(4つ)の貢献を行った人に特典がプレゼントされるものになっています。 自分はドキュメ