我知道如何在javascript中获取对象的方法(使用括号表示法),但不明白如何在Typescript中实现相同的方法?
尝试执行this[methodName]
时遇到错误[ts] Element implicitly has an 'any' type because type 'MyWebSocket' has no index signature. [7017]
答案 0 :(得分:1)
您必须使用类型断言来告诉编译器methodName
的值是受限制的,因此它只能是为this
声明的方法名称之一。
例如
this[methodName as 'method1' | 'method2']
或者如果您有一个名为Methods
的接口,在其中声明了要调用this
的所有方法
this[methodName as keyof Methods]
另一种解决方案是通过使用as any
类型声明来退出类型检查:
(this as any)[methodName]