javascript - Deklarera var i typescript från extern fil ger ReferenceError: ... är inte definierad


Jag har följande TypeScript-fil-->

module someModule {
declare var servicePort: string;

export class someClass{
constructor(){
  servicePort = servicePort || ""; //ERROR= 'ReferenceError: servicePort is not defined'
}

testade detta också på en av funktionerna inne i "someClass" -->

someFunction = () => {
    if (servicePort && servicePort != '') { //ERROR - also servicePort is not defined
            //do something with servicePort 
        }
}

Om jag definierar var servicePort någonstans i mina js/html-filer så fungerar det, men inte alla mina sidor innehåller servicePort-var, och jag vill säkert få värdet från den variabeln utan undantag. Vad gör jag fel?

Svar #1

Att en variabel ibland är definierad och ibland inte är ett ganska stort kodluktproblem, men om du verkligen vill göra detta, behöver du skydda åtkomst till den variabeln med typeof:

if (typeof servicePort !== "undefined") {
   // safe to use servicePort here
}

Observera att du inte kommer att kunna se skillnaden mellan en saknad variabel och en med värdet undefined, men så är livet.