从文档中,下一步.js 5.0的发布和互联网上的各种文章似乎是下一个.js很好地支持TypeScript,很多人都在使用它.

但这些线索表明,getInitialProps,这是至关重要的下一步.js应用程序不起作用:

我该怎么修?在类组件和功能组件中,当我执行ComponentName.getInitialProps = async function() {...}次操作时,会出现以下错误:

[ts] Property 'getInitialProps' does not exist on type '({ data }: { data: any; }) => Element'.

推荐答案

编辑2021/04/23:我下面的答案也过时了

有关使用新类型和命名导出键入数据获取方法的当前建议,请参见the Next.js docs.

tl;博士:

import { GetStaticProps, GetStaticPaths, GetServerSideProps } from 'next'

export const getStaticProps: GetStaticProps = async (context) => {
  // ...
}

export const getStaticPaths: GetStaticPaths = async () => {
  // ...
}

export const getServerSideProps: GetServerSideProps = async (context) => {
  // ...
}


过时(但功能性)答案:

以上答案从明年起就过时了.js现在正式支持TypeScript(公告here)

这个版本的一部分是更好的TypeScript类型,还有很多Next.js是用TypeScript本身编写的.这意味着@types/next美元的一揽子计划将被弃用,取而代之的是下一个正式的计划.js打字.

相反,您应该导入NextPage type并将其分配给您的组件.您也可以使用NextPageContext类型键入getInitialProps.

import { NextPage, NextPageContext } from 'next';

const MyComponent: NextPage<MyPropsInterface> = props => (
  // ...
)

interface Context extends NextPageContext {
  // any modifications to the default context, e.g. query types
}

MyComponent.getInitialProps = async (ctx: Context) => {
  // ...
  return props
}

Typescript相关问答推荐

如何将@for的结果绑定到变量?

使用前的组件渲染状态更新

属性的类型,该属性是类的键,其值是所需类型

类型{...}的TypeScript参数不能赋给类型为never的参数''

`((PrevState:NULL)=>;NULL)|null`是什么意思?

如何使用泛型类型访问对象

在NextJS中获得Spotify Oauth,但不工作'

如何使函数接受类型脚本中具有正确类型的链接修饰符数组

匿名静态类推断组成不正确推断

了解类型规则中的关键字

如何使我的函数专门针对联合标记?

为什么有条件渲染会导致material 自动完成中出现奇怪的动画?

在HighChats列时间序列图中,十字准线未按预期工作

如果数组使用Reaction-Hook-Form更改,则重新呈现表单

为什么ESLint会抱怨函数调用返回的隐式`any`?

如何在使用条件类型时使用void

类型与泛型抽象类中的类型不可比较

当数组类型被扩展并提供标准数组时,TypeScrip不会抱怨

错误:NG02200:找不到类型为';对象';的其他支持对象';[对象对象]';.例如数组

通过函数传递确切的类型,但验证额外的字段