回答編集履歴
1
読み返して分かりにくいと思ったので修正
answer
CHANGED
@@ -4,14 +4,15 @@
|
|
4
4
|
|
5
5
|
それもありますし、`NextPage`の場合はページコンポーネントだということを明示的にして、部品コンポーネントと区別するといった意味もあると思います。
|
6
6
|
|
7
|
+
ちなみに`NextPage`に相当するものを自分で作ると以下のような感じになると思います。
|
7
|
-
|
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
|
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> => {
|