错误TS2314:泛型类型'Promise <T>'需要1个类型的参数

Jyo*_*may 7 javascript angular

我使用Promise和observables逻辑使用"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);
Run Code Online (Sandbox Code Playgroud)

当给出"promise:"时,仍然会出现类似"错误TS2339:属性'订阅'在'Promise'类型上不存在"的问题.

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

Tab*_*res 16

您需要添加特定类型.

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

Promise<void>
Run Code Online (Sandbox Code Playgroud)

最终这是一个类似于任何其他类型的签名,因此您可以使用:

Promise<any> 
Run Code Online (Sandbox Code Playgroud)

https://basarat.gitbooks.io/typescript/content/docs/promise.html

  • 在该链接中,我无法在 `Promise&lt;&gt;` 的 `&lt;&gt;` 尖括号中找到确切的类型。我只能*推断*它应该与`resolve()`案例的值具有相同的类型。是否有任何关于我应该在 TypeScript 中作为泛型 Promise 类型放置的内容的良好文档? (4认同)