undefined vs odeklarerad variabel i typescript
Jag förstår inte varför TypeScript-kompilatorn inte klassificerar undefined med unassigned variabel.
class MyClass {
N1: number;
N2: number;
}
var mc = new MyClass();
mc.N2 = mc.N1;
alert(mc.N2); // output: undefined
Varför är inte resultatet Use of unassigned variable 'mc.N1'?
Det kan inte vara undefined eftersom jag har definierat det tydligt. Det är ett tal (ett tal exakt utan ett standardvärde).
Också, undefined betyder: vi har inte variabeln mc.N2.
Min fråga är: Missförstår jag något? Om ja, rätta mig gärna.
Svar #1
Här är din kod i javascript:
var MyClass = (function () {
function MyClass() {
}
return MyClass;
})();
var mc = new MyClass();
mc.N2 = mc.N1;
alert(mc.N2);
Varför är inte output Användning av oinitialiserad variabel 'mc.N1'?
Det finns inget sådant oassignerat tillstånd i JavaScript.
Det kan inte vara odefinierat eftersom jag har definierat det tydligt. Det är ett nummer (ett nummer exakt utan ett standardvärde).
I JavaScript är en variabel antingen undefined som inte har tilldelats något värde,
eller null som också är ett värde, eller vilken sträng, heltal eller float, datum eller boolean som helst. Däremot har deklaration av number ingen effekt på variabelns värde. Det är en intern fråga för TypeScript.
Också, odefinierad betyder: vi har inte variabeln mc.N2.
Undefined betyder inte att du inte har en variabel, det betyder att mc.N2 är en variabel som ännu inte har tilldelats något värde
Svar #2
Du missförstår betydelsen av undefined. Det betyder inte att egenskapen var definierad i koden. Låt oss läsa direkt från MDN:
En variabel som inte har tilldelats ett värde är av typen undefined.
Se här för mer information undefined
Och detta är exakt vad som hände i din kod. Värdet på mc.N1 har aldrig tilldelats.
Hoppas det här hjälper.
