我刚刚开始学习 NextJS 和 TypeScript,通过关注关于 Data Fetching 和 getStaticProps
函数类型的 NextJS 官方文档。在他们的示例中,他们使用这种方法根据 Posts
组件 props 的类型获取建议:
export const getStaticProps = async () => {
// ... fetching the posts (returns an array) ...
return {
props: {
posts
}
}
}
const Posts = ({ posts }: InferGetStaticPropsType<typeof getStaticProps>) => {
// ... posts type is inferred ...
}
我不明白他们正在做的是推断帖子道具的类型(在这种情况下是一组单独的帖子),但在阅读他们建议的做法之前,我想出了我的方法:
interface Post {
// ... created a Post interface ...
}
interface Props {
posts: Post[]
}
const Posts: React.FC<Props> = ({ posts }) => {
// ... TS still knows what posts should have (its an array) ...
}
我知道这两种方法是不同的,它们是根据请求的返回值推断道具的类型,但我的问题是:为什么我会推断道具的类型,我不应该总是期望它返回特定类型的值?我通过使用他们的方法得到了这一点,我对我收到的价值类型更加灵活,但像我这样的方法不是更安全和清晰吗?
(提前致谢)正如我告诉你的,我正在开始使用 Next 和 TypeScript,我不知道这是唯一的 - Next 方法还是 TypeScript 实践,请告诉我如果您在这些技术中比我更有经验。