提问人:Don 提问时间:7/21/2023 更新时间:7/21/2023 访问量:76
Typescript - 如何从 promise 中强制转换对象
Typescript - How to cast an object from a promise
问:
我正在尝试弄清楚如何从 API 调用(NextJs 13 Fetch)中投射对象。
我正在尝试使用实用程序方法中的 fetch 调用 Sanity 并将对象 (Post) 返回到页面,在那里我可以访问 Post 对象的属性。
这是我拥有的代码......
页面代码
/* Get the blog post */
const post = async () => {
await getPost('test-post');
};
Utility 方法
export async function getPost(slug:string): Promise <Post> {
return SanityClient.fetch(`*[_type == "post"] | order(publish_date desc)`,)
}
Post 对象
import { PortableTextBlockComponent } from "@portabletext/react"
import { Author } from "./Author";
import { Category } from "./Category";
import { BannerImage } from "./BannerImage";
export type Post = {
title: string,
headline: string,
slug: string,
publish_date: Date,
banner_image: BannerImage,
category: Category[],
author: Author[];
body: PortableTextBlockComponent[]
};
提前感谢您的见解。
答:
0赞
weagle08
7/21/2023
#1
我不确定你的fetch客户端的工作原理,有几个你必须将响应解析为json,但假设你已经这样做了,那么你可以通过.因此,您从 API 调用中获得的回报变为:as unknown as [type]
Utility方法
export async function getPost(slug:string): Promise <Post> {
return SanityClient.fetch(`*[_type == "post"] | order(publish_date desc)`,) as unknown as Post;
}
确保 TEST 验证返回的值是否为有效的 Post。
评论
0赞
Don
7/21/2023
谢谢。。。我没有解析为JSON。那会是什么样子?
评论