Руководство о том, как работает тип параметров TypeScript

Руководство о том, как работает тип параметров TypeScript

4 мая 2022 г.

Тип TypeScript Parameters используется для получения параметров или аргументов функции и создания на их основе нового типа. Это весьма полезно, когда мы знаем, что ввод «Функции» соответствует определенному типу, и мы хотим воспроизвести это.


В этом руководстве рассмотрим, как работает тип утилиты Параметры.


Пользовательские типы TypeScript


В этом руководстве рассматриваются пользовательские типы. Если вы не знакомы с пользовательскими типами, прочитайте мое руководство по пользовательским типам здесь.


Как работает тип параметров


Представьте, что у вас есть функция с заданным количеством аргументов. Например, вот функция TypeScript с двумя параметрами или аргументами, a и b:


```машинопись


const myFunction = (a: строка, b: строка) => {


вернуть а + б;


Допустим, мы хотим запустить эту функцию. Один из способов — передать массив с типом кортежа, три точки. Например:


```машинопись


const myFunction = (a: строка, b: строка) => {


вернуть а + б;


let passArray:[строка, строка] = ['привет', 'мир']


// Возвращает «привет мир»


мояФункция(...МассивПередачи);


Здесь мы определяем кортеж, который представляет собой просто [строка, строка], который мы можем передать в myFunction, удовлетворяя аргументы a и b.


Это прекрасно работает, но что, если аргументы myFunction изменятся? Это особенно вероятно, если myFunction исходит от стороннего сценария. Затем нам нужно будет не только обновить нашу функцию, но и не забыть обновить тип кортежа, который мы передаем. Нам также нужно будет оставаться в курсе пакета myFunction, если он изменится.


Вместо этого, если мы хотим, чтобы они всегда совпадали, мы можем использовать «Параметры» для создания одного и того же типа. Это создаст тип аргументов кортежа вместо того, чтобы определять его вручную:


```машинопись


тип myType = Параметры


// Эквивалентно типу кортежа:


// введите myType = [a: строка, b: строка]


Это избавляет нас от некоторых хлопот при определении пользовательских типов, так как теперь мы можем передавать любой тип myType в myFunction, не опасаясь ошибки:


```машинопись


const myFunction = (a: строка, b: строка) => {


вернуть а + б;


тип myType = Параметры


пусть myArray:myType = ['привет', 'мир'];


мояФункция(...мойМассив)


Ввод конкретных параметров с помощью Parameter Utility Type


Типы параметров также достаточно гибки и позволяют нам определять больше, чем просто полный набор аргументов.


Например, если мы хотим сопоставить только тип первого аргумента в нашей функции myFunction, мы можем сослаться на него как на простой массив, добавив [0]. Следующее будет соответствовать типу a, но если мы хотим соответствовать типу b, мы могли бы использовать [1]:


```машинопись


тип myType = Параметры<тип моей функции>[0]


// Эквивалент 'строки'


Таким образом, мы могли бы определить пользовательские типы для каждого аргумента, если это необходимо в нашем коде. Например, здесь мы определяем два пользовательских типа для первого и второго параметров функции и передаем их оба в нашу функцию:


```машинопись


const myFunction = (a: строка, b: строка) => {


вернуть а + б;


type aType = Parameters[0]


тип bType = Параметры<тип моей функции>[1]


пусть a:aType = 'привет'


пусть b:bType = 'мир'


моя функция (а, б)


Больше удовольствия с параметрами


Так как Parameters преобразует тип аргументов в новый тип, мы также можем передать функцию прямо в него. Ниже будет создан тип [a: строка, b: число]. Это менее полезно, чем получение параметров из конкретной функции, но в определенных ситуациях может пригодиться:


```машинопись


введите otherType = Parameters<(a: строка, b: число) => void>



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