如何将这些Java方法签名转换为打字稿:
public <E> Expression<E> setProjection(Expression<E> e) {
//return ...
}
public Expression<?> setProjection(Expression<?>... o) {
for (Expression<?> e : o)
this.setProjection(Projections.tuple(o));
return //...
}
答案 0 :(得分:1)
在TypeScript中,您可以使用单一方法签名来满足这两种方法(如果我正确地解释事物)......
public setProjection<E>(...e: Expression<E>[]): Expression<E> {
您可以使用一个表达式或多个表达式来调用它。如果您想知道自己是通过了一个还是多个,可以测试e
的长度。
如果您不关心E
,可以使用setProjection<any>
将其设为动态。
附加说明:TypeScript中的重载都装饰了一个方法...这会引导您进行单个实现...这会导致您不会因为签名单向工作而重载。重载看起来像是:
public setProjection<E>(e: Expression<E>): Expression<E>;
public setProjection<E>(...e: Expression<E>[]): Expression<E>;
public setProjection<E>(...e: Expression<E>[]): Expression<E> {
但它与非重载版本相同。
我还没有涵盖方法的实现细节,因为问题出在重载方面。