teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

読み返して分かりにくいと思ったので修正

2020/09/05 04:20

投稿

nskhei
nskhei

スコア704

answer CHANGED
@@ -4,14 +4,15 @@
4
4
 
5
5
  それもありますし、`NextPage`の場合はページコンポーネントだということを明示的にして、部品コンポーネントと区別するといった意味もあると思います。
6
6
 
7
+ ちなみに`NextPage`に相当するものを自分で作ると以下のような感じになると思います。
7
- 以下のよう自分でPageの型を用意していのですが、よくあユースケースなのでNext側が事前に`NextPage`という用意してくれているとい感じだと思いま
8
+ `getInitialProps`の型を定義しているだけなので、型安全というは使メリットは少なのかもしれせん
8
9
 
9
10
  ```typescript
10
11
  interface MyPage<P = {}> extends React.SFC<P> {
11
12
  getInitialProps?: (context: NextPageContext) => P | Promise<P>
12
13
  }
13
14
 
14
- const Page: MyPage <Props> = (props: Props) => {
15
+ const Page: MyPage<Props> = (props: Props) => {
15
16
  }
16
17
  ```
17
18
 
@@ -25,8 +26,8 @@
25
26
  型 '({ auth }: AuthProps) => Promise<Props>' を型 '(context: NextPageContext) => {} | Promise<{}>' に割り当てることはできません。
26
27
  ```
27
28
 
28
- とあるので、`getInitialProps`の型が間違っているということだと思います。
29
+ とあるので、`getInitialProps`の引数の型が間違っているということだと思います。
29
- `auth`や`AuthProps`が何なのかよく分からないので、全体のコードは示せませんが、少なくとも`getInitialProps`は以下のように引数で`NextPageContext`型を受け取る関数になるはずです。
30
+ `auth`や`AuthProps`が何なのかよく分からないので、全体のコードは示せませんが、少なくとも`getInitialProps`は以下のように引数で`NextPageContext`型、またはそれに準拠した型を受け取る関数になるはずです。
30
31
 
31
32
  ```typescript
32
33
  Page.getInitialProps = async (context: NextPageContext): Promise<Props> => {