angular - kesalahan deklarasi fungsi - Token tidak terduga. Diharapkan konstruktor, metode, aksesori, atau properti


Saya mengalami masalah berikut di aplikasi angular2 saya.

Token tidak terduga. Sebuah konstruktor, metode, pengakses, atau properti diharapkan.

Untuk implementasinya, saya mengikuti proyek berikut.

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

Saya tidak yakin mengapa saya mendapatkan kesalahan di atas dalam kode saya. Saya menulis kode sesuai dengan kode yang tersedia di tautan github di atas. Tangkapan layar di bawah ini akan menunjukkan di mana kesalahan muncul.

Seperti yang Anda lihat, kata kunci function telah digarisbawahi merah oleh IDE. Saya benar-benar tidak melihat masalah sintaksis dalam kode saya. (Saya berasal dari latar belakang Java dan ini adalah aplikasi Angular pertama saya)

Tolong tunjukkan kepada saya apa yang salah di sini dan bagaimana cara memperbaikinya.

Ini adalah kode lengkap saya:

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);
    }

}

Jawaban #1

Dalam TypeScript, deklarasikan fungsi di dalam metode, di luar kelas, atau sebagai properti kelas (dan di beberapa tempat lain), tetapi jangan sebagai anak langsung dari kelas. Anak langsung dari kelas harus berupa konstruktor, metode, aksesori, atau properti.

Berikut adalah sebuah contoh; kompiler mengizinkan semua deklarasi fungsi berikut.

class SomeClass {

    foo = function() { };

    someMethod() {

        function bar() { }

    }
}

function baz() {  }

Sebaiknya mencoba-coba TypeScript play dan mengerjakan tutorial resmi dari JavaScript ke TypeScript.