Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误TS2314:泛型类型';承诺<;T>';需要1个类型参数_Javascript_Angular - Fatal编程技术网

Javascript 错误TS2314:泛型类型';承诺<;T>';需要1个类型参数

Javascript 错误TS2314:泛型类型';承诺<;T>';需要1个类型参数,javascript,angular,Javascript,Angular,我使用Promise和observables逻辑使用“get”从服务器获取数据。 它一直工作到昨天。突然,它开始抛出上述错误。 请帮我找出错误。 我收到“泛型类型'Promise'需要1个类型参数”错误 @Injectable() 导出类myBlogService{ //属性来保存根服务器URL,即主机 私有服务器URL:string=“app/data.json” 构造函数(私有http:http){} //检查运行中的功能,以检查控制装置是否投入运行 检查(){ 警报(“从服务中点击”);

我使用Promise和observables逻辑使用“get”从服务器获取数据。 它一直工作到昨天。突然,它开始抛出上述错误。 请帮我找出错误。 我收到“泛型类型'Promise'需要1个类型参数”错误

@Injectable()
导出类myBlogService{
//属性来保存根服务器URL,即主机
私有服务器URL:string=“app/data.json”
构造函数(私有http:http){}
//检查运行中的功能,以检查控制装置是否投入运行
检查(){
警报(“从服务中点击”);
}
//get函数从服务器获取数据
//基本上是博客数据
得到承诺{
返回this.http.get(this.serverUrl)
.map(response=>response.json())
}
}
/**
* 
*我的组件
* 
*/
@组成部分({
选择器:“我的应用程序”,
提供者:[myBlogService],
样式URL:['app/css/app.css'],
模板:`
我的第一个Angular 2应用程序
知道我的名字吗
{{getResponse.name}
`
})
导出类myBlogApp{
//属性来保存博客数据
public getResponse={“name”:“”“age”:“”};
构造函数(受保护的myblogservice:myblogservice){}
//检查功能,以检查控制是否要投入使用
检查(){
this.myblogservice.check();
}
//get函数调用从服务器返回数据的服务get函数
得到(){
this.myblogservice.get().subscribe(数据=>{
this.getResponse=数据;
});
}
}
/**
* 
*NgModule声明
* 
*/
@NGD模块({
导入:[浏览器模块,HttpModule],
声明:[myBlogApp],
提供者:[],
引导:[myBlogApp]
})
导出类app{}
/**
* 
*应用程序引擎入口点
* 
*/
const platform=platformBrowserDynamic();
platform.bootstrapModule(app);
当“承诺”被给出时,它仍然会给出这样的问题 错误TS2339:类型“Promise”上不存在属性“subscribe”


我尝试了不同的解决方案,但还没有成功。

不要使用
承诺
尝试使用
可观察
,替换:

get(): Promise {
  return this.http.get(this.serverUrl)
               .map(response => response.json())
}

get():可观察{
返回this.http.get(this.serverUrl)
.map(response=>response.json())
}

您需要添加特定类型

如果它不包含数据且仅用于解析/拒绝功能,请使用:

Promise<void>
承诺
最终,这是一个与任何其他类型一样的类型签名,因此您可以使用:

Promise<any> 

Promise

如果不在myBlogService中键入提示get函数,会发生什么情况?在用Observable替换Promise后出现此错误。错误TS2304:找不到名称“Observable”。即使包含以下节点_模块,问题仍然存在::
import'rxjs/Rx';导入'rxjs/add/operator/map';导入“rxjs/可观察”;进口‘rx’
导入'rxjs/add/operator/map';从“rxjs/Observable”导入{Observable}这对我有用。谢谢你的帮助@在该链接中,我可以在
Promise
尖括号中找到确切的类型。我只能推断它的类型应该与
resolve()
案例的值相同。有什么好的文档说明我应该在TypeScript中输入什么类型的泛型承诺吗?
Promise<void>
Promise<any>