Skip to content

Parameters

204字小于1分钟

2022-12-01

题目

Github: Parameters

实现内置的 Parameters<T> 类型,而不是直接使用它,可参考TypeScript官方文档

const foo = (arg1: string, arg2: number): void => {}

type FunctionParamsType = MyParameters<typeof foo> // [arg1: string, arg2: number]

解题思路

通过 条件类型推断,获取函数的参数类型

答案

type MyParameters<T> = T extends (...args: infer R) => any ? R : never

验证

function 
foo
(
arg1
: string,
arg2
: number): void {}
function
bar
(
arg1
: boolean,
arg2
: {
a
: 'A' }): void {}
function
baz
(): void {}
type
cases
= [
Expect
<
Equal
<
MyParameters
<typeof
foo
>, [string, number]>>,
Expect
<
Equal
<
MyParameters
<typeof
bar
>, [boolean, {
a
: 'A' }]>>,
Expect
<
Equal
<
MyParameters
<typeof
baz
>, []>>,
]

参考