Объединения типов в TypeScript
Объединение типов используется, когда значение может иметь более одного типа.
Например, свойство может содержать либо string, либо number.
Объединение | (ИЛИ)
Символ | означает «или». Запись string | number говорит, что параметр — это string или number.
Пример
Одна и та же функция принимает и число 404, и строку '404'.
Prompt
Покажите параметр, который принимает либо строку, либо число, с помощью объединения типов.
Напишите функцию
printStatusCode, у которой параметр code имеет тип string | number и которая выводит «Мой код статуса: .» в шаблонной строке, затем вызовите её один раз с числом 404 и один раз со строкой '404'.
Вывод: программа на TypeScript и захваченный вывод
script.ts
function printStatusCode(code: string | number) {
console.log(`Мой код статуса: ${code}.`)
}
printStatusCode(404);
printStatusCode('404');
Ошибки объединения типов
Примечание: когда вы используете объединение типов, нужно знать, какой тип у вас на самом деле, прежде чем применять возможности, специфичные для типа, иначе вы получите ошибки типов.
Пример
Вызов toUpperCase() здесь не проходит: это метод типа string, а у number его нет, поэтому TypeScript отклоняет вызов на string | number.
Prompt
Покажите ошибку компиляции, которая возникает при вызове метода, доступного только для строк, на значении с объединением типов.
Напишите функцию
printStatusCode с параметром code: string | number, которая выводит code.toUpperCase() внутри шаблонной строки; компилятор должен сообщить, что toUpperCase не существует у типа string | number, потому что у number такого метода нет.
Вывод: программа на TypeScript и захваченный вывод
script.ts
function printStatusCode(code: string | number) {
console.log(`Мой код статуса: ${code.toUpperCase()}.`) // ошибка: свойство 'toUpperCase' не существует у типа 'string | number'. Свойство 'toUpperCase' не существует у типа 'number'
}