以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - TypeScript 类型谜题
10. 请实现Parameters<T>
实现方法:
type MyParameters<T> = T extends (...args: infer P) => any ? P : never;
这里使用了条件类型,判断传入的类型是否为一个函数类型,如果是,就使用infer
关键字来推断出它的参数类型的元组类型,作为返回值。否则返回never
。
测试:
type Foo = (a: string, b: number, c: boolean) => stringtype A = MyParameters<Foo> // [a: string, b: number, c: boolean]type B = A[0] // stringtype C = MyParameters<{a: string}> // Error: type '{ a: string; }' has no matching index signature
结果符合预期,测试通过。