[英]Typescript cannot infer correct argument types for an object of functions
[英]How to get argument types from Window Object functions in Typescript
我想知道如何在打字稿中获取对象窗口每个函数的所有 args 类型。
下面你将看到的是我已经实现的类型,但显然我做错了..
如果有人可以帮助我,我将不胜感激。
type Arguments<F extends Function> = F extends (...args: infer A) => any ? A : never;
const x = (window: Window) => window.alert('hola')
type TestArguments = Arguments<typeof x>;
您的TestArguments
变量是一个参数数组(它甚至是复数)。 您需要:
访问第一个元素:
type Arguments<F extends Function> = F extends (...args: infer A) => any ? A : never;
const x = (window: Window) => window.alert('hola')
type TestArgument = Arguments<typeof x>[0];
或者仅infer
第一个参数。
type FirstArgument<F extends Function> = F extends (firstArg: infer A) => any ? A : never;
const x = (window: Window) => window.alert('hola')
type TestArgument = FirstArgument<typeof x>;
最后,要仅获取函数的函数,您可以这样做:
type OnlyFunctions<T> = Pick<T, { [k in keyof T]: T[k] extends Function ? k : never }[keyof T]>
这基本上映射到Window
对象, never
设置不是函数的变量。 然后,获取该数组的键,并使用它来构造一个新数组(使用 Pick),该数组只有这些键。
您可以使用以下方法组合所有内容:
type OnlyFunctionsFromFirstArgument = OnlyFunctions<FirstArgument<typeof x>>;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.