型のパラメータを記述するつもりでしたnumber
が、型のスペルを間違えて、Number
代わりに と記述してしまいました。
私の IDE (JetBrains WebStorm) では、型はNumber
プリミティブ型に使用されるのと同じ色で記述されますnumber
が、クラスの名前 (既知または未知) を記述すると別の色が使用されるため、何らかの理由でスペルミスの型が正しい/ほぼ正しい/ある程度正しい型として認識されていると思われます。
コードをコンパイルすると、たとえばコンパイラが という名前のクラスを見つけられなかったというエラー メッセージが表示される代わりにNumber
、TSC は次のエラー メッセージを出力します。
Illegal property access
number
ということは、Number
両者は異なるタイプとして共存しているということでしょうか?
もしこれが本当なら、それらのクラス間の違いは何でしょうか?
そうでない場合、なぜ未知のクラスに対して表示されるのと同じエラーメッセージ(「名前 'Number' は現在のスコープに存在しません」)が出力されないのでしょうか。
コードは次のとおりです:
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];
}
}
ベストアンサー1
ライアンの回答を補足するために、TypeScript のすべきこと、すべきでないこと:
しないでください
Number
、、、、または型を使用することは絶対にありませんString
。これらの型はBoolean
、JavaScript コードで適切に使用されることはほとんどありません。Symbol
Object
/* WRONG */ function reverse(s: String): String;
する
number
、、、および のstring
タイプを使用します。boolean
symbol
/* OK */ function reverse(s: string): string;