Получить возвращаемый тип функции в Typescript с помощью ReturnType

Получить возвращаемый тип функции в 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)



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE