Sobes.tech
Senior

Vind de fout · TypeScript Sluwe fouten Elk van deze acht snippets compileert, passeert een informele review en ziet er goed uit. Elk verbergt een fout. Voor elk: vertel ons wat breekt, onder welke omstandigheden — en hoe je het zou vangen. Denk hardop. We zijn geïnteresseerd in hoe je code leest, niet in een stopwatch. Het is prima niet alles te raden. 01 Plaatsen van een bestelling 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} bevestigd`) return id } } 02 Bijwerken van een profiel app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('profiel bijwerken mislukt', err) } res.status(200).json({ status: 'opgeslagen' }) }) 03 Verwijderen van een commentaar 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 Pagina van een lijst function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // aanroeper const results = paginate(rows, page, 20) // pagina begint bij 1 in de UI 05 Artikelen laden met auteurs 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 Configuratie standaardwaarden oplossen interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anoniem', } } 07 Discount helper testen function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('past een korting toe', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Top scores berekenen 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) // ... later, ergens anders: renderRawResults(results) // verwacht [4, 1, 9, 2]