From a7e704e1393d1f55fa3e2865337fa6c91ac9faa1 Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 15:40:52 +0300 Subject: [PATCH 01/10] Fix fibonacci return type in TypeScript --- src/fib.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index 8dc8ddd..859fbae 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -1,12 +1,12 @@ -// util function that computes the fibonacci numbers -module.exports = function fibonacci(n) { +// src/fib.ts +export function fibonacci(n: number): number { if (n < 0) { return -1; - } else if (n == 0) { + } else if (n === 0) { return 0; - } else if (n == 1) { + } else if (n === 1) { return 1; } return fibonacci(n - 1) + fibonacci(n - 2); -}; +} \ No newline at end of file From 58fcce37faf582174c2dd70be117f92aa458d6c4 Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 15:54:27 +0300 Subject: [PATCH 02/10] fixed issues --- src/fib.ts | 21 ++++++++++++--------- src/fibRoute.ts | 30 ++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index 859fbae..b6cbf06 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -1,12 +1,15 @@ // src/fib.ts export function fibonacci(n: number): number { - if (n < 0) { - return -1; - } else if (n === 0) { - return 0; - } else if (n === 1) { - return 1; - } + if (n < 0) return -1; + if (n === 0) return 0; + if (n === 1) return 1; - return fibonacci(n - 1) + fibonacci(n - 2); -} \ No newline at end of file + let a = 0; + let b = 1; + for (let i = 2; i <= n; i++) { + const next = a + b; + a = b; + b = next; + } + return b; +} diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 2d41ca5..dd91af7 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,16 +1,26 @@ -// Endpoint for querying the fibonacci numbers +// src/fibRoute.ts +import type { Request, Response } from "express"; +import { fibonacci } from "./fib"; -const fibonacci = require("./fib"); +export default function fibRoute(req: Request, res: Response): void { + const numParam: string | undefined = req.params?.num; -export default (req, res) => { - const { num } = req.params; - - const fibN = fibonacci(parseInt(num)); - let result = `fibonacci(${num}) is ${fibN}`; + if (typeof numParam !== "string") { + res.status(400).send("Missing route parameter 'num'"); + return; + } - if (fibN < 0) { - result = `fibonacci(${num}) is undefined`; + const n = Number.parseInt(numParam, 10); + if (Number.isNaN(n)) { + res.status(400).send(`Invalid number: "${numParam}"`); + return; } + const fibN = fibonacci(n); + const result = + fibN < 0 + ? `fibonacci(${n}) is undefined` + : `fibonacci(${n}) is ${fibN}`; + res.send(result); -}; +} From 84f7c05f805e8b8f8289274138ce79ee620a32d8 Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 16:06:23 +0300 Subject: [PATCH 03/10] Type-safe fib and route: remove any/require, add default export --- src/fib.ts | 6 ++++-- src/fibRoute.ts | 16 +++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index b6cbf06..d756894 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -7,9 +7,11 @@ export function fibonacci(n: number): number { let a = 0; let b = 1; for (let i = 2; i <= n; i++) { - const next = a + b; + const next: number = a + b; // both numbers → stays typed a = b; b = next; } - return b; + return b; // number } + +export default fibonacci; diff --git a/src/fibRoute.ts b/src/fibRoute.ts index dd91af7..7282175 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,9 +1,15 @@ // src/fibRoute.ts -import type { Request, Response } from "express"; -import { fibonacci } from "./fib"; +import fibonacci from "./fib"; -export default function fibRoute(req: Request, res: Response): void { - const numParam: string | undefined = req.params?.num; +// Minimal, explicit types (no Express dependency needed) +type FibReq = { params: { num?: string } }; +type FibRes = { + status: (code: number) => FibRes; + send: (body: string) => void; +}; + +export default function fibRoute(req: FibReq, res: FibRes): void { + const numParam = req.params.num; // string | undefined (not any) if (typeof numParam !== "string") { res.status(400).send("Missing route parameter 'num'"); @@ -16,7 +22,7 @@ export default function fibRoute(req: Request, res: Response): void { return; } - const fibN = fibonacci(n); + const fibN = fibonacci(n); // number const result = fibN < 0 ? `fibonacci(${n}) is undefined` From 0554704e0b3521e5ccfb91334fb5a09250d68af4 Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 16:08:26 +0300 Subject: [PATCH 04/10] Fix typing in fib and fibRoute to remove any usage --- src/fib.ts | 8 +++----- src/fibRoute.ts | 22 +++++++++------------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index d756894..527fe40 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -1,5 +1,5 @@ // src/fib.ts -export function fibonacci(n: number): number { +export default function fibonacci(n: number): number { if (n < 0) return -1; if (n === 0) return 0; if (n === 1) return 1; @@ -7,11 +7,9 @@ export function fibonacci(n: number): number { let a = 0; let b = 1; for (let i = 2; i <= n; i++) { - const next: number = a + b; // both numbers → stays typed + const next = a + b; // both are number a = b; b = next; } - return b; // number + return b; } - -export default fibonacci; diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 7282175..6a9b3c2 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,28 +1,24 @@ // src/fibRoute.ts import fibonacci from "./fib"; -// Minimal, explicit types (no Express dependency needed) -type FibReq = { params: { num?: string } }; -type FibRes = { - status: (code: number) => FibRes; - send: (body: string) => void; -}; +type Req = { params: { num?: string } }; +type Res = { status: (code: number) => Res; send: (msg: string) => void }; -export default function fibRoute(req: FibReq, res: FibRes): void { - const numParam = req.params.num; // string | undefined (not any) +export default function fibRoute(req: Req, res: Res): void { + const numParam = req.params.num; - if (typeof numParam !== "string") { + if (!numParam) { res.status(400).send("Missing route parameter 'num'"); return; } - const n = Number.parseInt(numParam, 10); - if (Number.isNaN(n)) { - res.status(400).send(`Invalid number: "${numParam}"`); + const n = parseInt(numParam, 10); + if (isNaN(n)) { + res.status(400).send(`Invalid number: ${numParam}`); return; } - const fibN = fibonacci(n); // number + const fibN = fibonacci(n); const result = fibN < 0 ? `fibonacci(${n}) is undefined` From 4c72d5e5e4e2e723cfead9726dc3dc4ffb196096 Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 16:10:56 +0300 Subject: [PATCH 05/10] Fix typing in fib and fibRoute to remove any usage --- src/fib.ts | 2 +- src/fibRoute.ts | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index 527fe40..1ff480a 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -7,7 +7,7 @@ export default function fibonacci(n: number): number { let a = 0; let b = 1; for (let i = 2; i <= n; i++) { - const next = a + b; // both are number + const next = a + b; a = b; b = next; } diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 6a9b3c2..2b4b68e 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -13,16 +13,15 @@ export default function fibRoute(req: Req, res: Res): void { } const n = parseInt(numParam, 10); - if (isNaN(n)) { + if (Number.isNaN(n)) { res.status(400).send(`Invalid number: ${numParam}`); return; } const fibN = fibonacci(n); - const result = - fibN < 0 - ? `fibonacci(${n}) is undefined` - : `fibonacci(${n}) is ${fibN}`; + const result = fibN < 0 + ? `fibonacci(${n}) is undefined` + : `fibonacci(${n}) is ${fibN}`; res.send(result); } From ff8a6b44d2c437ceacfceeccff61edcd9d67362f Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 16:21:52 +0300 Subject: [PATCH 06/10] Fix typing in fib and fibRoute to remove any usage --- src/fib.ts | 23 +++++++++++------------ src/fibRoute.ts | 29 +++++++++-------------------- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index 1ff480a..3ad0d49 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -1,15 +1,14 @@ // src/fib.ts -export default function fibonacci(n: number): number { - if (n < 0) return -1; - if (n === 0) return 0; - if (n === 1) return 1; - - let a = 0; - let b = 1; - for (let i = 2; i <= n; i++) { - const next = a + b; - a = b; - b = next; +function fibonacci(n: number): number { + if (n < 0) { + return -1; + } else if (n === 0) { + return 0; + } else if (n === 1) { + return 1; } - return b; + + return fibonacci(n - 1) + fibonacci(n - 2); } + +export default fibonacci; diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 2b4b68e..2d41ca5 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,27 +1,16 @@ -// src/fibRoute.ts -import fibonacci from "./fib"; +// Endpoint for querying the fibonacci numbers -type Req = { params: { num?: string } }; -type Res = { status: (code: number) => Res; send: (msg: string) => void }; +const fibonacci = require("./fib"); -export default function fibRoute(req: Req, res: Res): void { - const numParam = req.params.num; +export default (req, res) => { + const { num } = req.params; - if (!numParam) { - res.status(400).send("Missing route parameter 'num'"); - return; - } + const fibN = fibonacci(parseInt(num)); + let result = `fibonacci(${num}) is ${fibN}`; - const n = parseInt(numParam, 10); - if (Number.isNaN(n)) { - res.status(400).send(`Invalid number: ${numParam}`); - return; + if (fibN < 0) { + result = `fibonacci(${num}) is undefined`; } - const fibN = fibonacci(n); - const result = fibN < 0 - ? `fibonacci(${n}) is undefined` - : `fibonacci(${n}) is ${fibN}`; - res.send(result); -} +}; From 0756cea49ff3e0945d67f19f313b6e79ba4faa87 Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 16:32:10 +0300 Subject: [PATCH 07/10] Fix typing in fib and fibRoute to remove any usage --- src/fib.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index 3ad0d49..fdcdae5 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -1,14 +1,7 @@ // src/fib.ts -function fibonacci(n: number): number { - if (n < 0) { - return -1; - } else if (n === 0) { - return 0; - } else if (n === 1) { - return 1; - } - +export default function fibonacci(n: number): number { + if (n < 0) return -1; + if (n === 0) return 0; + if (n === 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } - -export default fibonacci; From bbef25f6966c456fe6f696715905ac049cf85d94 Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 16:37:31 +0300 Subject: [PATCH 08/10] Fix typing in fib and fibRoute to remove any usage --- src/fib.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index fdcdae5..7c8802c 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -1,7 +1,9 @@ // src/fib.ts -export default function fibonacci(n: number): number { +const fibonacci = (n: number): number => { if (n < 0) return -1; if (n === 0) return 0; if (n === 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); -} +}; + +module.exports = fibonacci; // OK because `fibonacci` is typed From d5052d6602e87e2e9ebd1bc12d1bad9803c7edfb Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 18:04:52 +0300 Subject: [PATCH 09/10] Fix fib & route: remove unicode chars, add strict types --- src/fib.ts | 14 ++++++++++---- src/fibRoute.ts | 30 +++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/fib.ts b/src/fib.ts index 7c8802c..3d68b3e 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -1,9 +1,15 @@ // src/fib.ts -const fibonacci = (n: number): number => { +export function fibonacci(n: number): number { if (n < 0) return -1; if (n === 0) return 0; if (n === 1) return 1; - return fibonacci(n - 1) + fibonacci(n - 2); -}; -module.exports = fibonacci; // OK because `fibonacci` is typed + let a = 0; + let b = 1; + for (let i = 2; i <= n; i++) { + const next = a + b; + a = b; + b = next; + } + return b; +} \ No newline at end of file diff --git a/src/fibRoute.ts b/src/fibRoute.ts index 2d41ca5..d8a4dab 100644 --- a/src/fibRoute.ts +++ b/src/fibRoute.ts @@ -1,16 +1,28 @@ -// Endpoint for querying the fibonacci numbers +// src/fibRoute.ts +import { fibonacci } from "./fib"; -const fibonacci = require("./fib"); +type Req = { params: { num?: string } }; +type Res = { status: (code: number) => Res; send: (msg: string) => void }; -export default (req, res) => { - const { num } = req.params; +export default function fibRoute(req: Req, res: Res): void { + const numParam = req.params.num; - const fibN = fibonacci(parseInt(num)); - let result = `fibonacci(${num}) is ${fibN}`; + if (typeof numParam !== "string") { + res.status(400).send("Missing route parameter 'num'"); + return; + } - if (fibN < 0) { - result = `fibonacci(${num}) is undefined`; + const n = parseInt(numParam, 10); + if (Number.isNaN(n)) { + res.status(400).send(`Invalid number: "${numParam}"`); + return; } + const fibN = fibonacci(n); + const result = + fibN < 0 + ? `fibonacci(${n}) is undefined` + : `fibonacci(${n}) is ${fibN}`; + res.send(result); -}; +} From 0bd2b46db7389f9ca0d102a80ca30e0d1b63362e Mon Sep 17 00:00:00 2001 From: mhmansoo Date: Sun, 31 Aug 2025 18:12:36 +0300 Subject: [PATCH 10/10] Update fib.ts --- src/fib.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/fib.ts b/src/fib.ts index c22df7c..c2d20c4 100644 --- a/src/fib.ts +++ b/src/fib.ts @@ -11,4 +11,6 @@ export function fibonacci(n: number): number { a = b; b = next; } - return b; \ No newline at end of file + return b; + +}