
Получить возвращаемый тип функции в Typescript с помощью ReturnType
16 мая 2022 г.«ReturnType» в TypeScript — это служебный тип, очень похожий на «ParameterType». Он позволяет вам взять возвращаемый результат функции и создать на его основе тип.
Тип утилиты ReturnType
Тип утилиты ReturnType
очень полезен в ситуациях, когда вывод определенной функции должен быть принят другой функцией. В этом сценарии вы можете создать новый настраиваемый тип, которым ограничивается вывод функции.
Давайте посмотрим на глупый пример, чтобы поместить его в контекст. Ниже мы определяем новый тип, который имеет два свойства, a
и b
, оба из которых являются числами. Затем функция превращает все числа в этом объекте в строки и возвращает новый тип. Мы определяем пользовательский тип, называемый «Данные», который ожидает, что «а» и «б» будут строками.
```машинопись
функция sendData(a: число, b: число) {
возврат {
а: ${а}
,
б: ${б}
введите данные = {
строка,
б: строка
функция consoleData(данные:данные) {
console.log(JSON.stringify(данные));
пусть stringifyNumbers = sendData(1, 2);
consoleData(stringifyNumbers);
Поскольку consoleData
ожидает, что данные будут иметь формат Data
, TypeScript выдает ошибку, если a
или b
являются числами. Наша функция sendData
исправляет это, преобразовывая a
и b
в строки.
Проблема с этой настройкой заключается в том, что если мы добавили или изменили sendData
или наши входные данные, то Data
также необходимо было бы обновить. Это не имеет большого значения, но это легкий источник ошибок. Таким образом, мы можем вместо этого использовать ReturnType
, чтобы упростить объявление нашего типа. Наш тип Data
можно записать так:
```машинопись
функция sendData(a: число, b: число) {
возврат {
а: ${а}
,
б: ${б}
тип данных = ReturnType
// То же, что и запись:
// тип данных = {
// строка,
// б: строка
Так как sendData
возвращает данные типа { a: string, b: string }
, Data
становится этим типом. Это означает, что нам не нужно поддерживать две копии вывода sendData
— вместо этого у нас есть одна, внутри функции, и тип, соответствующий этому, что упрощает наш код.
Также опубликовано [Здесь] (https://fjolt.com/article/typescript-returntype-utility-type)
Оригинал