Funksional proqramlaşdırmanın üstünlükləri və çatışmazlıqları nədir?
Node.js
Təklif alsanız, nə vaxt işləməyə başlaya bilərsiniz?
INNER JOIN və LEFT JOIN arasındakı fərq nədir? Sağ cədvəldə uyğun sətir yoxdursa, solda olan sətirə nə baş verir?
Bir komandanın idempotent olması nə deməkdir?
Tətbiqdə bir və ya hər iki funksiyanı həyata keçirin: istifadəçi siyahıdakı ikon ilə saytları sabitləyə və çıxara bilər; sabitlənmiş saytlar siyahının yuxarısında göstərilməlidir. İkinci funksiya sizin ixtiyarınızdadır və seçiminizə bağlıdır.
Niyə indi şirkəti dəyişmək istəyirsiniz?
JavaScript/TypeScript-də || və ?? operatorları arasındakı fərq nədir? Əgər retryLimit 0 olaraq təyin olunarsa, nə baş verəcək?
Şərhi silin 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() }) Siyahını səhifələmək function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) }
Heç vaxt vahid testlər yazmısınız? Həddindən çoxmu?
Xətanı tapın · TypeScript Ağıllı Xətalar Bu səkkiz parçanın hər biri tərtib edir, qeyri-rəsmi nəzərdən keçir və yaxşı görünür. Hər biri bir xətanı gizlədir. Hər biri üçün: nə pozulur, hansı şərtlər altında — və necə aşkar edərdiniz. Yüksək səslə düşünün. Biz kodu necə oxuduğunuzla maraqlanırıq, stopwatch ilə deyil. Hər şeyi düzgün tapmaq lazım deyil. 01 Sifariş vermək 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, `Sifariş ${id} təsdiqləndi`) return id } } 02 Profil yeniləmək app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('profil yeniləməsi uğursuz oldu', err) } res.status(200).json({ status: 'yadda saxlanıldı' }) }) 03 Şərhi silmək 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 Siyahını səhifələmək function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // çağırıcı const results = paginate(rows, page, 20) // səhifə UI-də 1-dən başlayır 05 Məqalələri müəllifləri ilə yükləmək 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 Konfiqurasiya üçün standart dəyərləri həll etmək interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Anonim', } } 07 Endirim köməkçisini sınaqdan keçirin function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('endirim tətbiq edir', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 Ən yüksək balları hesablamaq 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) // ... daha sonra, başqa yerdə: renderRawResults(results) // gözlənilir [4, 1, 9, 2]