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



我已经使用承诺和可观察逻辑从服务器获取数据使用"get"。它一直工作到昨天。突然,它开始抛出上述错误。请帮我找出错误。我得到"泛型类型'承诺'需要1个类型参数"错误。

@Injectable()
export class myBlogService{
  // Property to hold root server URL i.e host
  private serverUrl:string = "app/data.json"
  constructor(private http:Http) {}
  // check function in service to check control is coming to service
  check(){
    alert("getting clicked from service");
  }
  // get function to get data from server
  // basically blog datas
  get(): Promise {
    return this.http.get(this.serverUrl)
               .map(response => response.json())
  }
}

/**
 * 
 * My Components
 * 
 */
@Component({
  selector: 'my-app',
  providers: [myBlogService],
  styleUrls: ['app/css/app.css'],
  template: `
    <h1 (click)= check()>My First Angular 2 App</h1>
    <button (click)=get()>Get My Name</button>
    <h1>{{getResponse.name}}</h1>
  `
})
export class myBlogApp {
  // Property to hold blog data
  public getResponse = {"name": "", "age": ""};
  constructor(protected myblogservice:myBlogService){}
  // check function to check control is going to service
  check() {
    this.myblogservice.check();
  }
  // get function calls service get function which return data from server
  get(){
    this.myblogservice.get().subscribe(data => {
      this.getResponse = data;
    });
  }
}

/**
 * 
 * NgModule Declaration
 * 
 */
@NgModule({
  imports:      [ BrowserModule, HttpModule ],
  declarations: [ myBlogApp ],
  providers:    [ ],
  bootstrap:    [ myBlogApp ]
})
export class app{}

/**
 * 
 * App engine entry point
 * 
 */
const platform = platformBrowserDynamic();
platform.bootstrapModule(app);

当给出"promise:"时,它仍然给出问题"错误TS2339:类型'Promise'上的属性'subscribe'不存在".

我尝试了不同的解决方案,但没有运气。

需要添加特定的类型。

如果它不包含任何数据并且纯粹用于解析/拒绝功能,则使用:

Promise<void>

最终这是一个与其他类型签名一样的类型签名,所以你可以使用:

Promise<any> 
https://basarat.gitbooks.io/typescript/content/docs/promise.html

Observable代替Promise,替换为:

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

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

最新更新