Programming Field

string - TypeScriptキーワード一覧

スポンサーリンク

「string」は基本型(プリミティブ型)の1つである「文字列型」として用いられます。

概要

(特筆の無いものは TypeScript/spec.md 「3.2.3 The String Type」での定義によります。)

キーワード情報

詳細

string 型はプログラム上で「文字列」を扱う基本的な型として利用されます。HTML要素のテキストや console.log でのコンソール出力などユーザーが視覚的に理解しやすい内容を出力する際に用いられます。

let x: string;             // string 型変数
x = "world";               // 文字列リテラルのデータは string 型として扱われるので string 型変数に代入可能
x = 'hello ' + x;          // string 型同士の「+」演算の結果は string 型
let y: 'bar' = 'bar';      // 文字列リテラル「'bar'」は型として使え、string 型変数としても扱える
let z = y.substr(0, 2);    // 「String」型のプロパティー(メソッド)が使用できる
let c = x[4];              // string 型が暗黙的に「String」型になり、インデックス「4」の値が得られる
                           // (意味的には 0 ベースの 4 文字目となる)
                           // ※ 「String」型の中に「readonly [index: number]: string;」という定義がある
let len = `${z}th`.length; // 通常のテンプレートリテラルの結果は string 型扱い

なお、string 型はグローバルの「String」型として扱うことは出来ますが、「String」型の変数に string 型データを代入しても実体は「String」オブジェクトのデータではなくあくまで string 型データであるため、「instanceof String」で検出することは出来ません。そのため、特別な理由が無い限りは「String」型やそのオブジェクトを利用するのではなく string 型を利用するのが推奨されます。(関数としての「String」の利用や、「String」自身に存在するプロパティー(スタティックフィールド)を利用するのは問題ありません。)

let p = String('tako');    // 「String 関数」の戻り値は string 型
let q = new String('yaki');// 「String」オブジェクトの作成(「String」型)
let r = p + q;             // 内部的に「toString」同等の処理が呼び出されるので string 型同士の「+」が行われ「takoyaki」になる

let s: String | null;      // 「String」型または null 型として定義(strictNullChecksが有効の場合)
if (process.env.NODE_ENV === 'DEVELOPMENT') {
    s = 'Debug';
} else {
    s = null;
}
// 「String」型かどうかのチェック
if (s instanceof String) {
    // (型解析上は s は String になるが実際にはここに入らない)
    console.log('String', s);
} else {
    // (型解析上は s は null になるが実際には文字列である場合もここに入る)
    console.log('null', s);
}

string 型かどうかは typeof x === "string" でチェックできます。また、この式は以下のように型ガード(type guard)としても利用できます。

let unk: any;       // 型が不明な変数
.
.
.
if (typeof unk === 'string') {
    // このブロックでは unk を string 型の変数として扱える
    console.log(unk.toUpperCase());
}

※ 「String」型は内部的にはオブジェクトであるため、x が「String」型であるとき typeof x === "string" は false になります。