Json 将泛型传递到Promise-like-Promise<;T>;?

Json 将泛型传递到Promise-like-Promise<;T>;?,json,typescript,generics,promise,Json,Typescript,Generics,Promise,我有以下功能: class RestService { public async get<T>(func: string): Promise<T> { var toRet = {}; await fetch(EndPoint + func) .then(response => response.json() as Promise<T>) .then(data => {

我有以下功能:

class RestService {
    public async get<T>(func: string): Promise<T> {
        var toRet = {};
        await fetch(EndPoint + func)
        .then(response => response.json() as Promise<T>)
        .then(data => {
            toRet = data;
        })
        .catch(e => {
        });

        return toRet as T;
    }
}
并按如下方式调用函数:

get<Model>("getmodel")

根据我的理解,Typescript支持泛型,Promise接受变量类型,我唯一的想法是我不能将泛型传递到泛型?

也许这样写更好

类RestService{
公共异步获取(func:string):承诺{
返回等待获取(“”+func)
.then(response=>response.json()作为承诺)
。然后(数据=>{
返回数据;
})
.catch(e=>{
});
}
}
你也可以在操场上看到它

这样,您就不必覆盖任何类型,编译器就可以自己解决所有问题

返回类型现在是
Promise
,因为
catch
函数不返回任何内容。您可能会有其他的东西或什么都没有,这取决于您在发生错误时所做的操作

Typescript不会将
数据
对象转换为与自动输入的
T
类型匹配


例如,如果您使用
get调用该方法非常好。

如果响应If始终是一个模型,那么该方法不应该是泛型的,其返回类型应该是
Promise
。这就是你要问的吗?端点的响应是一个json对象,模型只是匹配json对象字段。我假设Promise,其中T是类,它会自动填充一个带有json值的类实例。因此,我可能会调用get,并期望返回类型为'AnotherModel',但我会返回一个'object',其中的字段与'AnotherModel'中的变量声明相匹配……不,它不会这样做。json()只是将json反序列化为POJO。它不知道也不关心具体的generc类型。而
toRet as T
只是告诉TypeScript编译器:“相信我,对象是T类型的,我知道我在做什么”。TypeScript是纯编译时的,除非您显式地编写它,否则没有运行时强制转换/转换。
get<Model>("getmodel")
{name:"some name"}