Creé un controlador de clase mecanografiado. Intencionalmente pasé una propiedad faltante que es "correo electrónico" en la carga útil. Y me pregunto por qué no arroja un error de mecanografiado como "correo electrónico (indefinido) no es igual a correo electrónico (cadena)" .
El problema es que literalmente no arrojó un error porque continúa ejecutando "console.log". Mi expectativa es que no debería continuar la ejecución ya que no cumplió con escribir "testType" (corríjame si me equivoco).
¿Puedo saber sus pensamientos sobre cómo lograr este?
type testType = { body: { email: string password: string } } class Testing { public static sampleFunc = async (req: testType, res: Response, next: NextFunction) => { const temp = req.body console.log('temp', temp); // ..more code here res.send('success'); } }Typescript se usa para la verificación de tipos estáticos y se compila en javascript. Por lo tanto, en el tiempo de ejecución, en realidad está ejecutando el código JavaScript compilado y, como tal, no puede confiar en TypeScript para protegerlo contra el paso de propiedades con un tipo incorrecto.
Para lograr lo que desea, debe agregar una comprobación de errores adicional en el código antes de procesar la solicitud.
Algo como:
class Testing { public static sampleFunc = async (req: testType, res: Response, next: NextFunction) => { if (!req.email || !req.password) { throw new Error("No email / password provided"); } res.send('success'); } }