如何获取TypeScript类上静态属性的类型?

如何获取TypeScript类上静态属性的类型?,typescript,Typescript,我有一个带有一些静态方法的助手类: export default class MyHelper { private constructor() {} private static privateMethod() {} public static publicHelperMethod() {} } 我有一个使用publicHelperMethod的React组件,我想确保在我的props声明中传递这个特定的方法 我尝试这样做的方式是: type LoggerMethod

我有一个带有一些静态方法的助手类:

export default class MyHelper {
    private constructor() {}
    private static privateMethod() {}
    public static publicHelperMethod() {}
}
我有一个使用publicHelperMethod的React组件,我想确保在我的props声明中传递这个特定的方法

我尝试这样做的方式是:

type LoggerMethod = MyHelper.publicHelperMethod;
但这会抛出一个错误,并表示MyHelper正被用作名称空间

我可以使类本身成为一种类型:

type Helper = MyHelper;
但我只对我的logger方法(这个抽象中的公共助手)感兴趣

是否有可能使类a类型的方法成为可能?如果是这样的话,它的语法是什么


或者,我这样做完全是错误的吗?

如果您想使用该方法的类型:

type LoggerMethod = typeof MyHelper.publicHelperMethod;
const loggerMethod = MyHelper.publicHelperMethod;
如果要使用该方法的实现:

type LoggerMethod = typeof MyHelper.publicHelperMethod;
const loggerMethod = MyHelper.publicHelperMethod;

我不确定我是否见过这种情况——使用特定函数作为类型。通常,您会创建一个函数接口,并声明您的特定函数实现了该接口,因此您可以使用它。在建模时,它更有意义,因为您可以更改调用的函数,但可以维护类型。尽管如此,我不确定您是否可以将行为作为函数接口的一部分。因此,您可以说您有一个
sorter
接口,它接受两个值并返回一个数字,但是
函数multiply(a,b){returna*b}
也匹配该签名,但它不适合排序。因此,函数接口并不能解决您的类型问题。是的,您将能够捕获函数的类型,它只是
()=>void
,或者
(this:typeof MyHelper)=>void
,但是无法表示该类型的特定函数。也就是说,没有“函数文字”类型。这是正确的。仅供参考)如果您只需要函数的
返回类型
,请使用内置类型
返回类型
。示例:
type MyFunctionType=ReturnType