函数声明错误 - 意外的令牌。期望构造函数,方法,访问器或属性

时间:2017-02-27 17:05:37

标签: angular typescript

我在angular2应用程序中遇到以下问题。

  

意外的令牌。构造函数,方法,访问器或属性是   预期

对于我在项目后面的实施。

https://github.com/Vintharas/angular2-step-by-step-06-consuming-real-data-with-http/blob/master/app/people.service.ts

我不确定为什么我的代码中出现上述错误。我根据上面github链接中提供的代码编码。屏幕截图下方将显示错误出现的位置。

enter image description here

正如您所看到的,IDE的关键字功能已用红色加下划线。我真的在代码中看不到语法问题。(我来自Java背景,这是我的第一个Angular应用程序)

请告诉我这里有什么问题以及如何纠正错误。

这是我的完整代码:

import { Http, Response, Headers } from '@angular/http';
import { Injectable } from '@angular/core';
import { Tender } from './models/Tender';
import { Observable } from 'rxjs/Rx';


@Injectable()
export class TendersService {

    private _endpointUrl: string = "http://127.0.0.1:8080/get-all";

    constructor(private _http: Http) {
    }

    getAllTenders(): Observable<Tender[]> {

        console.log("get all tenders in service");

        let tenders = this._http
            .get(this._endpointUrl)
            .map(mapTenders)
            .catch(handleError);

        console.log('tenders.service.ts -> retrieved tenders = '+tenders);
        return tenders;
    }

    function mapTenders(response: Response): Tender[] {
        console.log('tender.service.ts -> mapTenders');
        return response.json().map(toTender);
    }

    function toTender(r: any): Tender {
        console.log('tender.service.ts -> toTender');
        let tender = <Tender>({
            id: r.id,
            name: r.name,
            description: r.description,
            category: r.category,
            district: r.district,
            town: r.town,
            imageUrls: r.imageUrls,
            referenceNumber: r.referenceNumber,
            addresses: r.addresses,
            telNos: r.telNos,
            dateTimePosted: r.dateTimePosted,
            lastUpdateOn: r.lastUpdateOn
        });
        console.log('Parsed tender in service :', tender);
        return tender;
    }


    function handleError(error: any) {
        let errorMsg = error.message || `Yikes! There was was a problem with our hyperdrive device and we couldn't retrieve your data!`
        console.error(errorMsg);

        // throw an application level error
        return Observable.throw(errorMsg);
    }

}

1 个答案:

答案 0 :(得分:2)

在TypeScript中,声明方法内部的函数,类外的函数或类属性(以及其他一些地方),但不是类的直接子元素。类的直接子节点必须是构造函数,方法,访问器或属性。

这是一个例子;编译器允许以下所有函数声明。

class SomeClass {

    foo = function() { };

    someMethod() {

        function bar() { }

    }
}

function baz() {  }

值得fiddling around with TypeScript playworking thru the offical JavaScript to TypeScript tutorial