ghaiklor / type-challenges-solutions

Solutions for the collection of TypeScript type challenges with explanations
https://ghaiklor.github.io/type-challenges-solutions/
Creative Commons Attribution 4.0 International
471 stars 56 forks source link

type-challenges-solutions/en/easy-parameters #317

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

Parameters

This project is aimed at helping you better understand how the type system works, writing your own utilities, or just having fun with the challenges.

https://ghaiklor.github.io/type-challenges-solutions/en/easy-parameters.html

AurelienWebnation commented 1 year ago

Hey!

Maybe we can add

type MyParameters<T extends Function> = ...
ghaiklor commented 1 year ago

@AurelienWebnation Personally, I don't see the reason for that because we check it with conditional type anyway…

AurelienWebnation commented 1 year ago
type MyParameters<T> = T extends (...args: infer P) => any ? P : never;
type Foo = MyParameters<string>; // Foo = never
type MyParameters<T extends Function> = T extends (...args: infer P) => any ? P : never;
type Foo = MyParameters<string>; // Error on string : Type 'string' does not satisfy the constraint 'Function'

So the second solution is an alternative to have an error directly on My Parameters type if we don't pass a function. But it's just an idea ahah!