在C#中,我具有以下通用定义。
public interface IMediator{
TResult ExecuteQuery<TResult>(Query<TResult> query);
}
public abstract class Query<TResult> { }
然后使用它看起来像这样“容易”。
public class MyQuery<MyResult> {
public string SomeValue
}
//later in code
var res = mediator.ExecuteQuery(new MyQuery {SomeValue="Test"});
//The type of res will now be MyResult, infered from the Query
这可以在TypeScript中完成吗? 我试图“复制”解决方案,但是类型推断无法正常工作。
export interface IQuery<T> {}
export async function QueryServer<T>(query:IQuery<T>) : Promise<T> {
return await fetch(.......).Json();
}
class TestQuery implements IQuery<string[]> {
something: string;
constructor(something: string) {
this.something = something
}
}
var res = await QueryServer(new TestQuery("BLABLA"));
res
的类型现在在开发时为unknown
。