Bla*_*ett 10 node.js typescript fastify
我刚刚开始使用 Typescript 来使用 Fastify,并且非常喜欢它。
但是,我试图弄清楚是否可以输入响应负载。我有用于序列化工作的响应模式,这可能就足够了,但我有内部类型化的对象(例如 IUser),最好让 Typescript 检查。
以下内容效果很好,但我想返回一个 TUser 例如,如果我返回不同的内容,则有打字稿。使用模式仅仅排除字段。
interface IUser {
firstname: string,
lastname: string
} // Not in use in example
interface IUserRequest extends RequestGenericInterface {
Params: { username: string };
}
const getUserHandler = async (
req: FastifyRequest<IUserRequest, RawServerBase, IncomingMessage | Http2ServerRequest>
) => {
const { username } = req.params;
return { ... }; // Would like to return instance of IUser
};
app.get<IUserRequest>('/:username', { schema }, getUserHandler);
Run Code Online (Sandbox Code Playgroud)
我可以为响应扩展一个等效的 RequestGenericInterface 吗?
小更新:似乎可以使用reply.send()来添加类型,但为了自我文档的目的,最好在上面提供T。
从文档中:
使用这两个接口,定义一个新的 API 路由并将它们作为泛型传递。简写路由方法(即 .get)接受包含五个命名属性的通用对象 RouteGenericInterface :
Body、Querystring、Params和Headers。Reply
您可以使用该Reply类型。
interface MiscIPAddressRes {
ipv4: string
}
server.get<{
Reply: MiscIPAddressRes
}>('/misc/ip-address', async (req, res) => {
res
.status(_200_OKAY)
.send({
ipv4: req.ip // this will be typechecked
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6437 次 |
| 最近记录: |