はじめに
こちらは「TypeScriptのデータ型について 〜プリミティブ型〜」の続きです。
(記事リンク:https://qiita.com/I_D_EEE/items/73653a526fed213d004b)
この記事は、プログラミング初学者が学んだ内容をアウトプットする場として書いています。
他の方にとっては当たり前の内容かもしれませんが、同じように学び始めた方の参考になれば幸いです。
なお、記事内容に誤りがあれば、ぜひコメントで指摘していただけると嬉しいです。よろしくお願いします!
オブジェクト型
オブジェクト型は複数の値をまとめて扱うための型です。
プリミティブ型と同様に、実際に使ったことのないもの、あるいは理解が及んでいないもの(存在を知っているだけのもの)もあることはご容赦ください。
object型
オブジェクトリテラルを表す型です。
let person: object = { name: "山田太郎", age: 25 };
通常はより具体的な型(インターフェースや型エイリアス)を使用します。
interface Person {
name: string;
age: number;
}
let person: Person = { name: "山田太郎", age: 25 };
array型
同じ型の値を複数持つ配列を表します。2つの記法があります。
let numbers: number[] = [1, 2, 3, 4, 5];
// または
let strings: Array<string> = ["りんご", "バナナ", "みかん"];
tuple型
固定長の配列で、各要素の型が決まっている型です。
let person: [string, number] = ["山田太郎", 25];
enum型
名前付きの定数セットを定義できる型です。
enum Color {
Red,
Green,
Blue
}
let c: Color = Color.Green; // 1
デフォルトでは0から始まる数値が割り当てられますが、明示的に値を指定することもできます。
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT"
}
特殊な型について
any型
どんな型の値も許容する型です。TypeScriptの型チェックを無効にするため、本番環境では極力使用を避けた方が良さそうです。
let value: any = "こんにちは";
value = 123; // OK
value = true; // OK
unknown型
any
型と似ていますが、より安全です。値を使用する前に型チェックが必要です。
let value: unknown = "こんにちは";
// 使用前に型チェックが必要
if (typeof value === "string") {
console.log(value.toUpperCase());
}
void型
関数が値を返さないことを表す型です。
function greet(): void {
console.log("こんにちは");
}
never型
決して発生しない値の型です。
例外をスローする関数(必ずエラーを発生させる関数)や、無限ループを持つ関数の戻り値型として使用されます。
function error(message: string): never {
throw new Error(message);
}
複合型
ユニオン型(Union Types)
複数の型のいずれかを持つことができる型です。
let id: string | number;
id = "abc123"; // OK
id = 123; // OK
インターセクション型(Intersection Types)
複数の型を組み合わせた型です。
interface Name {
name: string;
}
interface Age {
age: number;
}
type Person = Name & Age;
const person: Person = {
name: "山田太郎",
age: 25
};
まとめ
TypeScriptのデータ型は、プログラムの安全性と可読性を高める重要な機能です。
プリミティブ型とオブジェクト型の違いを理解し、適切な型を選択することで、より堅牢なコードを書けるようになります。(そうなれるように願ってます)