Template Strings
Строкові шаблони (шаблонні літерали).
Синтаксично це рядки, які використовують зворотні галочки (тобто ` ) замість одинарних (') або подвійних (") лапок. Бонусом шаблонних літералів є:
Інтерполяція строк
Багаторядкові строки
Шаблони з тегами
String Interpolation
Інтерполяція строк.
Ще один поширений випадок використання — це коли ви хочете створити деякий рядок із кількох статичних рядків + деяких змінних. Для цього вам знадобиться деяка логіка шаблонів, і саме звідси строкові шаблонні отримали свою назву. Відтоді їх було офіційно перейменовано на літерали шаблону. Ось як раніше можна було створити рядок html:
Зараз ви можете використати легший варіант:
Зауважте, що будь-який заповнювач усередині інтерполяції (${
і }
) розглядається як вираз JavaScript і оцінюється як такий, наприклад. ви можете займатися дивовижною математикою.
Multiline Literals
Багаторядкові строки.
EВи хотіли поставити новий рядок у рядок JavaScript? Можливо, ви хотіли вставити текст? Вам потрібно було б екранувати символ нового рядка за допомогою нашого улюбленого символу екранування \
, а потім вручну вставити новий рядок у рядок у наступному рядку. Це показано нижче:
В TypeScript можна просто використати template string:
Tagged Templates
Шаблони з тегами.
Ви можете розмістити функцію (так званий «тег») перед рядком шаблону, і вона отримає можливість попередньо обробити літерали рядка шаблону плюс значення всіх виразів-заповнювачів і повернути результат. Кілька зауважень:
Усі статичні літерали передаються як масив для першого аргументу.
Усі значення виразів-заповнювачів передаються як інші аргументи. Найчастіше ви просто використовуєте параметри rest, щоб також перетворити їх у масив.
Ось приклад, у якому ми маємо функцію тегу (під назвою htmlEscape
), яка екранує html з усіх заповнювачів:
Примітка. Ви можете позначити
заповнювачі
як будь-який[]
. Що б ви не анотували, TypeScript введе перевірку, щоб переконатися, що заповнювачі, які використовуються для виклику тегу, відповідають анотації. Наприклад, якщо ви плануєте мати справу зрядком
абочислом
, ви можете анотувати...placeholders:(string | number)[]
Generated JS
Згенерований JS.
Для цілей компіляції до ES6 код досить простий. Багаторядкові рядки стають екранованими. Інтерполяція рядків стає конкатенацією рядків. Шаблони з тегами стають викликами функцій.
Summary
Багаторядкові рядки та інтерполяція рядків — це просто чудові речі в будь-якій мові. Чудово, що тепер ви можете використовувати їх у своєму JavaScript (дякуючи TypeScript!). Шаблони з тегами дозволяють створювати потужні рядкові утиліти.
Last updated