小编Col*_*lum的帖子

动态访问TypeScript类的方法

我正在尝试使用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 properties typescript access

8
推荐指数
1
解决办法
2009
查看次数

在TypeScript中获取类方法的名称

对于查看此内容的任何人,此问题类似于以下内容:

如何在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)

javascript regex typescript

8
推荐指数
2
解决办法
8032
查看次数

TypeORM - 连接表上的多对多 where 子句

我正在使用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' …

typeorm

5
推荐指数
2
解决办法
2万
查看次数

标签 统计

javascript ×2

typescript ×2

access ×1

properties ×1

regex ×1

typeorm ×1