Sobes.tech
Senior

Finde den Fehler · TypeScript Hinterhältige Fehler Jede dieser acht Code-Snippets kompiliert, besteht eine ungeprüfte Überprüfung und sieht in Ordnung aus. Jedes verbirgt einen Fehler. Für jedes: Sag uns, was kaputt geht, unter welchen Bedingungen — und wie du es erkennen würdest. Denk laut nach. Wir sind interessiert daran, wie du Code liest, nicht an einer Stoppuhr. Es ist nicht notwendig, alles richtig zu machen. 01 Bestellung aufgeben interface Notifier { send(to: string, message: string): Promise<void> } class OrderService { constructor(private readonly notifier: Notifier) {} async placeOrder(order: Order): Promise<OrderId> { const id = await this.repo.save(order) this.notifier.send(order.customerEmail, `Order ${id} bestätigt`) return id } } 02 Profil aktualisieren app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('Profilaktualisierung fehlgeschlagen', err) } res.status(200).json({ status: 'gespeichert' }) }) 03 Kommentar löschen app.delete('/comments/:id', requireAuth, async (req, res) => { const comment = await db.comments.findById(req.params.id) if (!comment) { return res.status(404).end() } await db.comments.delete(comment.id) res.status(204).end() }) 04 Liste paginieren function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // aufrufer const results = paginate(rows, page, 20) // Seite beginnt bei 1 im UI 05 Artikel mit Autoren laden async function loadArticlesWithAuthors(): Promise<ArticleView[]> { const articles = await db.query('SELECT * FROM articles WHERE published = true') const views: ArticleView[] = [] for (const article of articles) { const author = await db.query('SELECT * FROM users WHERE id = $1', [article.authorId]) views.push({ ...article, author: author[0] }) } return views } 06 Standardwerte auflösen interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonym', } } 07 Rabatt-Helfer testen function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('wendet einen Rabatt an', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Top-Scores berechnen function topScores(scores: number[], take = 3): number[] { return scores.sort((a, b) => b - a).slice(0, take) } const results = [4, 1, 9, 2] const podium = topScores(results) // ... später, anderswo: renderRawResults(results) // erwartet [4, 1, 9, 2]