动态检查value是否为Union类型



我已经为我支持的方法生成了一个Union类型,我想检查该方法是否是我支持的方法之一,然后动态调用该方法。我知道我可以通过使用支持的方法名称数组和使用方法如include来检查这一点,但我想知道是否有可能进行类型检查?

import * as mathFn from './formula/math';
type SupportedMathFunction = keyof typeof mathFn;
//'fnA'| 'fnB' | ...

,例如,我想使用这样的语法:

if( methodName is SupportedMathFunction){
//do something
}

我会检查给定的方法名称是否为mathFn的键。不幸的是,这种检查不足以让编译器注意到字符串是SupportedMathFunction类型,您需要使用用户定义类型保护

function isMemberOfMathFn(methodName: string): methodName is keyof typeof mathFn {
return methodName in mathFn;
}

function test(methodName: string) {
if (isMemberOfMathFn(methodName)) {
const method = mathFn[methodName];
}
}

相关内容

  • 没有找到相关文章

最新更新