在打字稿中按名称获取方法

时间:2018-12-04 17:10:17

标签: typescript typescript-typings

我知道如何在javascript中获取对象的方法(使用括号表示法),但不明白如何在Typescript中实现相同的方法?

尝试执行this[methodName]时遇到错误[ts] Element implicitly has an 'any' type because type 'MyWebSocket' has no index signature. [7017]

1 个答案:

答案 0 :(得分:1)

您必须使用类型断言来告诉编译器methodName的值是受限制的,因此它只能是为this声明的方法名称之一。

例如

this[methodName as 'method1' | 'method2']

或者如果您有一个名为Methods的接口,在其中声明了要调用this的所有方法

this[methodName as keyof Methods]

另一种解决方案是通过使用as any类型声明来退出类型检查:

(this as any)[methodName]