如何获取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