TypeScriptのCallable Object型からCallableを取り除く
code:ts
type Input = {
(): string;
hoge: number;
}
type Output = {
hoge: number;
}
code:ts
type ExcludeCallable<T> = Pick<T, keyof T>
でできる
逆に関数型の方を取り出そうとしてみたが、これは厳密には無理そう?
code:ts
type ExtractCallable<T> = T extends (...args: infer U) => infer V ? (...args: U) => V : never;
で行けそうに見えるが、関数にoverroadがある場合に片方しか取れない。