Sobes.tech
Senior

Ҷустуҷӯи хато · TypeScript Хатогиҳои пинҳоншуда Ҳар яке аз ин ҳашт қисмҳо компилируется, аз назар гузаронида мешавад ва хуб ба назар мерасад. Ҳар яке хато дорад. Барои ҳар яке: бигӯед, ки чӣ вайрон мешавад, дар кадом шароит — ва чӣ гуна онро пайдо мекунед. Гап занед. Мо ба чӣ гуна хондани коди шумо таваҷҷӯҳ дорем, на ба секундомери. Ҳатто агар натавонед ҳамаашро муайян кунед, хуб аст. 01 Таҳрири фармоиш 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} confirmed`) return id } } 02 Навсозии профил app.post('/profile', async (req, res) => { const profile = parseProfile(req.body) try { await db.profiles.update(req.user.id, profile) } catch (err) { logger.warn('навсозии профил нокомил шуд', err) } res.status(200).json({ status: 'захира шуд' }) }) 03 Баъд аз тоза кардани шарҳ 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 Пагинацияи рӯйхат function paginate<T>(items: T[], page: number, pageSize: number): T[] { const start = page * pageSize const end = start + pageSize return items.slice(start, end) } // даъваткунанда const results = paginate(rows, page, 20) // саҳифа аз 1 оғоз мешавад дар UI 05 боркунии мақолаҳо бо муаллифон 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 Ҳалли танзимоти пешфарз interface Settings { retryLimit?: number displayName?: string } function resolveConfig(s: Settings) { return { retryLimit: s.retryLimit || 3, displayName: s.displayName || 'Бе ном', } } 07 Санҷиши ёрдамчии тахфиф function applyDiscount(price: number, percent: number): number { return price - price * (percent / 100) } describe('applyDiscount', () => { it('мутобиқати тахфифро месанҷад', () => { const spy = vi.fn().mockReturnValue(90) const result = spy(100, 10) expect(result).toBeDefined() expect(result).toBe(90) }) }) 08 ҳисоб кардани холҳои боло 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) // ... баъдтар, дар ҷои дигар: renderRawResults(results) // интизор меравад [4, 1, 9, 2]