From c03a2f8d515756c3229c6702b8cd066f410dbdf8 Mon Sep 17 00:00:00 2001 From: Nazar Antoniuk Date: Mon, 17 Jun 2024 10:44:31 +0300 Subject: [PATCH] sync to Ukrainian --- site/docs/uk/guide/filter-queries.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/site/docs/uk/guide/filter-queries.md b/site/docs/uk/guide/filter-queries.md index 4c3e419cd..c91dca547 100644 --- a/site/docs/uk/guide/filter-queries.md +++ b/site/docs/uk/guide/filter-queries.md @@ -29,7 +29,7 @@ bot.on("message:text", async (ctx) => { }); ``` -Отже, grammY реалізує запити фільтрування як під час виконання, так і на рівні типів. +Отже, grammY реалізує запити фільтрування як [під час виконання](#продуктивність), так і [на рівні типів](#безпека-типів). ## Приклади запитів @@ -347,8 +347,24 @@ bot.on(":text", handler); Перевірка запитів фільтрування відбувається лише один раз, коли бот ініціалізується та викликається `bot.on()`. Під час запуску grammY створює предикатну функцію із запиту фільтрування, розділяючи його на частини. -Кожна частина буде зіставлена з функцією, яка виконує одну перевірку `in` або дві перевірки, якщо частина запиту пропущена і потрібно перевірити два значення. +Кожна частина буде зіставлена з функцією, яка виконує одну перевірку одну перевірку істинності для властивості об'єкта або дві перевірки, якщо частина запиту пропущена і потрібно перевірити два значення. Потім ці функції обʼєднуються у предикат, який перевіряє лише ті значення, що мають відношення до запиту, без перебору ключів обʼєкта `Update`. Ця система використовує менше операцій, ніж деякі конкуруючі бібліотеки, яким потрібно виконувати перевірку вмісту у масивах для маршрутизації оновлень. Система запитів фільтрування grammY працює швидше, попри те, що набагато потужніша. + +### Безпека типів + +Як згадувалося вище, запити фільтрування автоматично звужують певні властивості об'єкта контексту. +Предикат, отриманий з одного або декількох запитів фільтрування, є предикатом типу TypeScript, який виконує це звуження. +Загалом, ви можете довіряти тому, що виведення типів працює коректно. +Якщо властивість виводиться як присутня, ви можете безпечно покладатися на неї. +Якщо властивість виводиться як потенційно відсутня, то це означає, що існують певні випадки, коли вона відсутня. +Не варто виконувати приведення типів за допомогою оператора `!`. + +> Для вас може бути неочевидним, що це за випадки. +> Не соромтеся запитувати в [груповому чаті](https://t.me/grammyjs), якщо не можете розібратися. + +Обчислення цих типів є складним. +При розробці запитів фільтрування було використано багато знань про Bot API. +Якщо ви хочете дізнатися більше про основні підходи до обчислення цих типів, ви можете подивитися [виступ на YouTube](https://youtu.be/ZvT_xexjnMk).