TS1188: У виразі ‘for…of’ дозволено оголошувати лише одну змінну.

TypeScript — потужна мова програмування, яка розширює JavaScript, додаючи статичні визначення типів. Це дозволяє розробникам знаходити помилки під час розробки, а не в момент виконання, що робить код більш надійним. Типи в TypeScript визначають форму даних (які дані можна призначити змінній), допомагаючи підтримувати послідовність усього додатка.

Якщо ви хочете дізнатися більше про TypeScript або використовувати інструменти ШІ (AI tools), щоб покращити свої навички програмування, рекомендую підписатися на мій блог або скористатися gpteach для покрокових навчальних матеріалів.

Однією з основних концепцій TypeScript є те, що це надмножина JavaScript. Це означає, що будь-який валідний код JavaScript також є валідним кодом TypeScript. TypeScript додає додаткові функції, такі як анотації типів, які допомагають краще розуміти код і уникати поширених проблем, пов'язаних з динамічною типізацією в JavaScript.

Розуміння TS1188: У виразі ‘for…of’ дозволено оголошувати лише одну змінну

Помилка TypeScript TS1188 виникає, коли ви намагаєтесь оголосити кілька змінних у циклі for...of. Вираз for...of є зручним способом для ітерації по ітерабельних об'єктах, таких як масиви або рядки, але накладає обмеження на те, як ви можете оголошувати змінні всередині циклу.

Що спричиняє TS1188?

Коли ви намагаєтесь оголосити більше ніж одну змінну при ініціалізації циклу for...of, TypeScript викидає помилку TS1188. Наприклад:

const arr = [1, 2, 3];  

for (let a = 0, b = 1 of arr) {  
 console.log(a, b);  
}

У цьому коді ви отримаєте помилку: TS1188: У виразі ‘for…of’ дозволено оголошувати лише одну змінну. Цикл for...of дозволяє оголосити лише одну змінну, якою в цьому випадку є змінна a.

Як виправити TS1188

Щоб виправити цю помилку, переконайтеся, що ви оголошуєте лише одну змінну у виразі for...of і виконуйте додаткові присвоєння змінних всередині циклу. Ось виправлений варіант проблемного коду:

const arr = [1, 2, 3];  

for (let value of arr) {  
 let a = value; // Призначаємо value змінній a всередині циклу  
 let b = a + 1; // Тепер можна використовувати b  
 console.log(a, b);  
}

Оголошуючи тільки value у виразі for...of, код тепер виконується без помилок і правильно виводить кожне значення з масиву разом з його збільшеним значенням.

Важливо знати!

  1. Вимога однієї змінної: Коли використовуєте for...of, завжди оголошуйте тільки одну змінну.
  2. Область видимості змінних: Змінні, оголошені в блоці циклу for...of, мають область видимості тільки в цьому блоці, що допомагає керувати тривалістю життя змінних, щоб уникнути непередбачених конфліктів.

Додаткові приклади

Помилка TS1188 може виникати в різних контекстах.
Ось ще один приклад, що демонструє помилку:

const fruits = ["apple", "banana", "cherry"];  

for (let i = 0, fruit of fruits) { // Це викликає TS1188  
 console.log(i, fruit);  
}

Виправте це, оголосивши лише одну змінну в циклі:

const fruits = ["apple", "banana", "cherry"];  

for (let fruit of fruits) {  
 let index = fruits.indexOf(fruit); // Обчислюємо індекс фрукта  
 console.log(index, fruit);  
}

Важливо знати!

  • Ітерація з індексом: Якщо вам потрібно отримати індекс разом з значенням у циклі, розгляньте можливість використання методу forEach, або керуйте індексом самостійно всередині циклу.
const fruits = ["apple", "banana", "cherry"];  
fruits.forEach((fruit, index) => {  
 console.log(index, fruit); // Тут немає помилки TS1188  
});

Розділ FAQ

Q: Що таке TypeScript?
A: TypeScript — це надмножина JavaScript, яка додає статичні типи, що допомагає знаходити помилки під час розробки.

Q: Як виправити TS1188?
A: Переконайтеся, що у вашому виразі for...of оголошена тільки одна змінна, а інші обробляються всередині циклу.

Q: Чи можу я використовувати forEach замість for...of?
A: Так! forEach добре працює, коли вам також потрібен доступ до індексу без викликання помилки TS1188.

На завершення, помилка TS1188: У виразі ‘for…of’ дозволено оголошувати лише одну змінну, служить нагадуванням про дотримання правил TypeScript щодо оголошень змінних у циклах. Дотримуючись кращих практик та розуміючи, як правильно працювати з циклами, ви можете уникнути цієї помилки і писати більш чистий та зручний для підтримки код.

Перекладено з: TS1188: Only a single variable declaration is allowed in a ‘for…of’ statement

Leave a Reply

Your email address will not be published. Required fields are marked *