angular - „Nu se poate invoca o expresie al cărei tip nu are o semnătură de apel.” atunci când se folosește cuvântul cheie „get” în TypeScript


Am un furnizor configurationService care are această funcție cu cuvântul cheie get:

get getServerContextPath(): string {
    return this.config.serverContextPath;
}

Când folosesc această funcție într-un component astfel:

const contextPath = this.configurationService.getServerContextPath();

Primeșc o eroare:

[ts] Nu se poate invoca o expresie al cărei tip nu are o semnătură de apel. Tipul 'String' nu are semnături de apel compatibile.

Totuși, dacă elimin cuvântul cheie get, nu primesc niciun fel de erori:

getServerContextPath(): string {
    return this.config.serverContextPath;
}

De ce este asta?

Răspuns #1

În primul caz, obții o proprietate, așa că trebuie să o apelezi ca

const contextPath = this.configurationService.getServerContextPath

În al doilea caz este o metodă (funcție) a unei clase, deci o poți apela ca

const contextPath = this.configurationService.getServerContextPath()

Răspunsul #2

Încearcă astfel:

const contextPath = this.configurationService.getServerContextPath;