Typescript プリミティブ型: 「number」型と「Number」型に違いはありますか (TSC は大文字と小文字を区別しませんか)? 質問する

Typescript プリミティブ型: 「number」型と「Number」型に違いはありますか (TSC は大文字と小文字を区別しませんか)? 質問する

型のパラメータを記述するつもりでした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 コードで適切に使用されることはほとんどありません。SymbolObject

/* WRONG */
function reverse(s: String): String;

するnumber、、、および のstringタイプを使用します。booleansymbol

/* OK */
function reverse(s: string): string;

おすすめ記事