String и Symbol
TypeScript
const someString1: string = 'Some string';
const someString2: Readonly<string> = 'Some string';
const someString3: 'Some1' | 'Some2' = 'Some1';
Строка. Любое выражение в кавычках будет строкой (одинарные, двойные, обратные - Template literals);
Строки в JS в кодировке UTF-16.
'some string';
'some string';
`some string`;
Содержимое строки в JavaScript нельзя изменить. Нельзя взять символ посередине и заменить его. Как только строка создана — она такая навсегда.
let str = 'Hi';
str[0] = 'h'; // не изменит переменную
В обратные кавычки можно вставлять ЛЮБОЙ JS-КОД.
const someVarialbe = 'SOME TEXT';
`${someVarialbe} some text`;
Даже функции
function summ(a, b) {
return a + b;
}
console.log(`Сумма: ${summ(2, 3)}`); // 'Сумма: 5'
Конкатинация
const a = 'String 1';
const b = 'String 2';
a + ' ' + b; // 'String 1 String 2' - Старый способ
`${a} ${b}`; // 'String 1 String 2' - Новый (обратные кавычки)
// Иногда возникает такая ошибка:
const a = '123';
const b = 123;
const c = a + b;
// при сложении число конвертируется в строку
console.log(c); // '123123'
Спец. символы
// пробелы после "+" не будут учитываться (поэтому можно красиво отфармотировать)
let longString1 =
'This is a very long string which needs ' +
'to wrap across multiple lines because ' +
'otherwise my code is unreadable.';
// пробелы будут учитываться (поэтому нужно переносить на начало новой строки)
let longString2 =
'This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.';
// пробелы будут учитываться (поэтому нужно переносить на начало новой строки)
let longString3 = `This is a very long string which needs
to wrap across multiple lines because
otherwise my code is unreadable.`;
Экранирование. С помощью специальных символов (обратный слеш). Строки со спец. символами нужно сохранять в переменные.
// экранирование кавычек при испоьзовании обычных кавычек
'I\'m the JS!';
// Экранирование обратного слэша
'abc \\ abc'; // 'abc \ abc'
// Перенос строки (\n)
let str1 = 'Hello World!\nThis is my string';
// Табуляция (\t)
let str2 = 'Hello World!\tThis is my string';
// unicode (\uXXXX ) - кодировка UTF-16
`\u00E9`; // 'é'