В TypeScript есть возможность определить опциональные типы с помощью символа "?". Это позволяет указать, что конкретное значение может быть как определенного типа, так и undefined.
Для определения опционального типа, вы можете использовать символ "?" после имени переменной в ее объявлении. Например:
let myOptionalValue: string | undefined;
В этом примере "myOptionalValue" объявлено как опциональная переменная типа "string". Она может либо содержать значение типа "string", либо быть равной undefined.
Опциональные типы могут быть использованы не только для переменных, но и для параметров функций и свойств объектов. Например:
function printName(firstName: string, lastName?: string) { if (lastName) { console.log(`Full Name: ${firstName} ${lastName}`); } else { console.log(`First Name: ${firstName}`); } } printName("John"); // выводит "First Name: John" printName("John", "Doe"); // выводит "Full Name: John Doe"
В этом примере параметр "lastName" функции "printName" объявлен как опциональный, указав символ "?" после его имени. При вызове функции вы можете передать только один аргумент "firstName", и функция будет работать без ошибок, выводя только имя. Если вы передадите оба аргумента, функция выведет полное имя.
Также в TypeScript используется оператор "!" для отметки переменных как опциональных, но при этом имеющих гарантированное значение, чтобы избежать ошибок компиляции. Этот оператор называется Non-null assertion operator. Например:
let myOptionalValue!: string;
В этом примере "myOptionalValue" отмечено как опциональная переменная типа "string", но без символа "?". Оператор "!" говорит TypeScript, что значение будет присвоено позже и гарантированно не будет равным undefined. Это может быть полезно, когда вы уверены, что переменная получит значение до ее использования.
В заключение, опциональные типы в TypeScript предоставляют гибкость для работы с переменными, параметрами функций и свойствами объектов, которые могут иметь как значение определенного типа, так и undefined. Это помогает при разработке более безопасного и надежного кода.