В TypeScript можно получить тип аргумента функции с помощью инструментов рефлексии и системы типов языка.
Самым простым способом получить тип аргумента функции - это использовать встроенный оператор typeof
. Данный оператор позволяет получить строковое представление типа переменной или выражения. Однако, при использовании typeof
для аргументов функции, тип будет определяться как "function", а не конкретный тип аргумента.
Для получения точного типа аргумента функции в TypeScript можно воспользоваться специальным типом Parameters
. Тип Parameters
принимает в качестве аргумента конкретную функцию и возвращает тип параметров этой функции в виде кортежа. Кортеж - это особый тип данных, представляющий собой упорядоченный набор значений фиксированной длины.
Давайте посмотрим на пример кода:
function exampleFunc(arg1: string, arg2: number) { console.log(arg1, arg2); } type ExampleFuncArgs = Parameters<typeof exampleFunc>; // ExampleFuncArgs: [string, number] const args: ExampleFuncArgs = ['Hello, world!', 42]; exampleFunc(...args); // Logs: Hello, world! 42
В данном примере мы определили функцию exampleFunc
с двумя аргументами, первый из которых имеет тип string
, а второй - number
. Затем мы использовали тип Parameters
для получения типа аргументов функции exampleFunc
и присвоили его переменной ExampleFuncArgs
. Тип ExampleFuncArgs
будет равен кортежу [string, number]
.
Теперь мы можем использовать полученный тип ExampleFuncArgs
, чтобы создать переменные с типизированными значениями аргументов функции exampleFunc
. Также мы можем передать эти значения функции exampleFunc
при помощи оператора распространения ...
для разворачивания кортежа в отдельные аргументы.
Таким образом, при использовании типа Parameters
, мы можем статически получить и использовать тип аргумента функции в TypeScript.