【发布时间】:2021-07-04 03:15:49
【问题描述】:
我最近开始了使用 typescript 的旅程,并且正在使用 express + typescript 开发一个应用程序。
我有这个控制器:
import { Request, Response } from 'express'
import PartialUserUpdateService from '../services/PartialUserUpdateService'
class PartialUserUpdateController {
async handle (request: Request, response: Response): Promise<Response> {
const id : number = +request.params.id
const partialUserContent = request.body
const partialUserUpdateService = new PartialUserUpdateService()
const user = await partialUserUpdateService.execute({ userId: id, partialUserContent })
return response.status(200).json(user)
}
}
export default new PartialUserUpdateController()
还有这项服务:
import { getRepository } from 'typeorm'
import UserSchema from '../entities/user.schema'
interface IPartialUserUpdate {
name?: string;
email?: string;
age?: number;
cpf?: string;
}
interface IPartialUserDTO {
userId: number;
partialUserContent: IPartialUserUpdate;
}
class PartialUserUpdateService {
async execute ({
userId,
partialUserContent
}: IPartialUserDTO): Promise<IPartialUserUpdate> {
const userRepository = getRepository(UserSchema)
const user = await userRepository.findOne(userId)
if (!user) throw new Error('User doesnt exists')
await userRepository.update({ id: user.id }, userContent)
return partialUserContent
}
}
export default PartialUserUpdateService
我正在尝试使partialUserContent 对象只能接收在接口IPartialUserUpdate 中声明的属性
如何显式检查属性和类型并在任何类型不同时报告错误?
【问题讨论】:
-
请考虑修改此问题中的代码以构成minimal reproducible example,将其放入像The TypeScript Playground (link to code) 这样的独立IDE 中时,可以清楚地说明您面临的问题。这将使那些想要帮助您的人立即着手解决问题,而无需首先重新创建它。它将使您得到的任何答案都可以针对定义明确的用例进行测试。
标签: node.js typescript express