Ich wollte einen Parameter vom Typ schreiben number
, aber ich habe den Typ falsch geschrieben und Number
stattdessen geschrieben.
In meiner IDE (JetBrains WebStorm) wird der Typ Number
mit derselben Farbe geschrieben, die für den primitiven Typ verwendet number
wird. Wenn ich einen Namen einer Klasse (bekannt oder unbekannt) schreibe, wird eine andere Farbe verwendet, sodass ich denke, dass er irgendwie erkannt wird Der falsch geschriebene Typ ist ein korrekter / fast korrekter / irgendwie korrekter Typ.
Wenn ich den Code kompiliere Number
, schreibt TSC diese Fehlermeldung , anstatt sich beispielsweise zu beschweren, dass der Compiler keine Klasse mit dem Namen gefunden hat :
Illegal property access
Heißt das , dass number
und Number
beide koexistiert als verschiedene Typen?
Wenn dies wahr ist, was ist der Unterschied zwischen diesen Klassen?
Wenn dies nicht der Fall ist, warum wurde dann nicht dieselbe Fehlermeldung geschrieben, die für unbekannte Klassen angezeigt wird ("Der Name 'Nummer' existiert im aktuellen Bereich nicht")
Dies ist der Code:
class Test
{
private myArray:string[] = ["Jack", "Jill", "John", "Joe", "Jeff"];
// THIS WORKS
public getValue(index:number):string
{
return this.myArray[index];
}
// THIS DOESN'T WORK: ILLEGAL PROPERTY ACCESS
public getAnotherValue(index:Number):string
{
return this.myArray[index];
}
}
quelle
Um Ryans Antwort mit Hilfe der TypeScript Do's and Don'ts zu ergänzen :
quelle
[]
, um Array-Typen zu bezeichnen. Es könnte jedoch Ausnahmen geben, da bin ich mir nicht sicher.Wie das TypeScript-Dokument sagt:
Nehmen Sie
any
als Parameter und geben Sie die Nummer oder zurücknull
Es gibt eine einfache Möglichkeit zu überprüfen, ob ein Wert eine Zahl ist oder nicht
So können wir einfach die Nummer überprüfen, wie:
quelle