我正在尝试使用TypeScript中先前设置的变量的值动态访问类的方法.
与此类似的东西:
class Foo {
bar(){ }
}
var methodName = "bar";
var fooBar = new Foo();
fooBar.methodName(); // I would like this to resolve to fooBar.bar();
Run Code Online (Sandbox Code Playgroud)
例如在PHP中,我可以执行以下操作:
class Foo {
public function bar(){ }
}
$methodName = "bar";
$fooBar = new Foo();
$fooBar.$methodName(); // resolves to fooBar.bar();
Run Code Online (Sandbox Code Playgroud)
任何人都知道这是否可能,如果是,那该怎么办?我知道它与类型语言的想法略有矛盾,但它是我当前问题的唯一解决方案
对于查看此内容的任何人,此问题类似于以下内容:
如何在JavaScript中获取对象类型的名称?
在TypeScript中运行时获取对象的类名
然而,在一些方面它是不同的.
我希望得到属于类的方法的名称,并将其存储在TypeScript/JavaScript中的变量中.
看看以下设置:
class Foo {
bar(){
// logic
}
}
Run Code Online (Sandbox Code Playgroud)
以上是有效的TypeScript,我想在不同的类中创建一个方法,它将返回bar()方法的名称,"bar"
例如:
class ClassHelper {
getMethodName(method: any){
return method.name; // per say
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够以ClassHelper下列方式使用:
var foo = new Foo();
var barName = ClassHelper.getMethodName(foo.bar); // "bar"
Run Code Online (Sandbox Code Playgroud)
我看过很多帖子,有些建议使用以下内容:
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec(obj.toString());
var result = results && results.length > 1 && results[1];
Run Code Online (Sandbox Code Playgroud)
但由于我的方法没有从function
另一个建议开始,这失败了:
public getClassName() {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec(this["constructor"].toString()); …Run Code Online (Sandbox Code Playgroud) 我正在使用Typeorm@0.2.5MySql 驱动程序。
我有一个实体,MyEntity,它与另一个实体 , 具有多对多关系RelEntity。因此,Typeorm 生成 PK 的数据透视表以创建关系。
我的问题来自需要MyEntity使用RelEntity.prop = mySearchKey.
我不确定这是因为我缺少一些文档还是没有完全理解如何使用 Typeorm 来构建这个查询。
我相信我的 SQL 语句如下所示:
SELECT m.* FROM my_entity_table m
LEFT JOIN my_rel_pivot_table mrp ON mrp.my_entity_id = m.id
LEFT JOIN rel_entity_table r ON r.id = mrp.rel_entity_id
WHERE r.id = {MY_VALUE_HERE}
Run Code Online (Sandbox Code Playgroud)
但是,我不太确定如何将其转换为 Typeorm 查询。
我试过了:
this.entityRepo.find({
where: {
rel: myValue
}
});
Run Code Online (Sandbox Code Playgroud)
我也试过:
this.entityRepo.find({
where: {
rel: { id: myValue}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
Unknown column 'MyEntity.myEntityId' in 'where clause' …