JavaScript、TypeScriptの型付け、データ型、プリミティブ、オブジェクトについてまとめています。
※以下の記事も参照。
・JavaScriptプログラミング、メモ
・TypeScriptプログラミング、メモ
※目次をクリックすると目次の下部にコンテンツが表示されます。
変数の型付け
・動的型付け言語。
変数宣言時にデータ型を指定する必要がなく、またスクリプト実行時に必要に応じてデータ型が自動的に変換される。
・後で型を変換することは出来る。
変数宣言時にデータ型を指定する必要がなく、またスクリプト実行時に必要に応じてデータ型が自動的に変換される。
・後で型を変換することは出来る。
データ型
●データ型
・6つのプリミティブ型とオブジェクト型の7つの型がある。
〇プリミティブ型(オブジェクトでなく、メソッドを持たないデータ)
・文字列:String
・数値:Number
・真偽値:Boolean
・null
・undefined
・シンボル(ECMAScript2015で追加)
インスタンスが固有で不変となるデータ型
〇オブジェクト型:Object
●プリミティブ値とオブジェクト
・String、Number、Booleanでは、プリミティブ値とオブジェクトで区別される。
例)
文字列リテラル(ダブルクォーテーションかシングルクォーテーションで示される)、およびString関数を通常通り呼び出した場合(すなわちnew演算子を使わずに呼び出した場合)に返される値は、プリミティブ値の文字列。
〇プリミティブ値とオブジェクトの変換
・JavaScriptでは、必要に応じてプリミティブ値の値(文字列など)が自動的にオブジェクト(Stringオブジェクト)に変換される。
そのため、プリミティブ値の文字列に対してメソッド呼び出しを行うことで、Stringオブジェクトのメソッドを使用することができる。
・オブジェクトはvalueOfメソッドを利用することでプリミティブ値に変換することができる。
・6つのプリミティブ型とオブジェクト型の7つの型がある。
〇プリミティブ型(オブジェクトでなく、メソッドを持たないデータ)
・文字列:String
・数値:Number
・真偽値:Boolean
・null
・undefined
・シンボル(ECMAScript2015で追加)
インスタンスが固有で不変となるデータ型
〇オブジェクト型:Object
●プリミティブ値とオブジェクト
・String、Number、Booleanでは、プリミティブ値とオブジェクトで区別される。
例)
文字列リテラル(ダブルクォーテーションかシングルクォーテーションで示される)、およびString関数を通常通り呼び出した場合(すなわちnew演算子を使わずに呼び出した場合)に返される値は、プリミティブ値の文字列。
〇プリミティブ値とオブジェクトの変換
・JavaScriptでは、必要に応じてプリミティブ値の値(文字列など)が自動的にオブジェクト(Stringオブジェクト)に変換される。
そのため、プリミティブ値の文字列に対してメソッド呼び出しを行うことで、Stringオブジェクトのメソッドを使用することができる。
・オブジェクトはvalueOfメソッドを利用することでプリミティブ値に変換することができる。
TypeScript独自の機能
●型付け
・TypeScriptはコンパイル時における型検査を可能にするために、型注釈による静的型付けの仕組みを提供している。
・この仕組みの利用は任意なので、この仕組みを無視して普通のJavaScriptの動的型付けを使うこともできる。
〇型注釈の例
var name: string = ‘一郎’;
var score: number = 5.3;
var flg: boolean = false;
var names: string[] = [‘一郎’, ‘二郎’, ‘三郎’];
●型推論
・型が与えられていない場合、TypeScriptコンパイラは型を推論するために型推論を使う。
・宣言の不足により型推論が不可能な場合、動的なany型がデフォルトで使われる。
●プリミティブ型
〇any
・弱い型付けあるいは動的型付けにする場合は、any型を用いる。
・型推論が不可能な場合、動的なany型がデフォルトで使われる。
・any型の値に対する操作は、JavaScriptと同様の操作をサポートしているので、any型に対する操作については最低限の静的型検査が行われるだけである。
・TypeScriptはコンパイル時における型検査を可能にするために、型注釈による静的型付けの仕組みを提供している。
・この仕組みの利用は任意なので、この仕組みを無視して普通のJavaScriptの動的型付けを使うこともできる。
〇型注釈の例
var name: string = ‘一郎’;
var score: number = 5.3;
var flg: boolean = false;
var names: string[] = [‘一郎’, ‘二郎’, ‘三郎’];
●型推論
・型が与えられていない場合、TypeScriptコンパイラは型を推論するために型推論を使う。
・宣言の不足により型推論が不可能な場合、動的なany型がデフォルトで使われる。
●プリミティブ型
〇any
・弱い型付けあるいは動的型付けにする場合は、any型を用いる。
・型推論が不可能な場合、動的なany型がデフォルトで使われる。
・any型の値に対する操作は、JavaScriptと同様の操作をサポートしているので、any型に対する操作については最低限の静的型検査が行われるだけである。