string型 (文字列型)
文字列リテラル
Javaなどの言語では、ダブルクォートで文字列リテラル(String型)を表現し、シングルクォートで文字リテラル(char型)を表現するといったように、使うクォートで型が変わります。
一方JavaScriptでは、ダブルクォートでもシングルクォートでもまったく同じstring型になります。この点はPHPと同様です。またバッククォート(`
)を使ってもstring型になります。
ts
"Hello";'Hello';`Hello`;
ts
"Hello";'Hello';`Hello`;
文字列中に同じ引用符が含まれている場合は、バックスラッシュ\
でエスケープしなければなりません。
ts
'He said "madam, I\'m Adam."'"He said \"madam, I'm Adam.\""
ts
'He said "madam, I\'m Adam."'"He said \"madam, I'm Adam.\""
ダブルクォートとシングルクォートを使った文字列リテラルは、文字列の途中で改行できません。改行を入れたい場合は、\n
などの改行シーケンスを入れる必要があります。
テンプレートリテラル
JavaScriptで、バッククォート`
で囲んだ文字列はテンプレートリテラル(template literal)と言います。テンプレートリテラルは、改行と式の挿入(expression interpolation)ができます。
改行の挿入はテンプレートリテラルの中で実際に改行をすれば、そのとおりに反映されます。
ts
console .log (`実際に改行をしてみる`);
ts
console .log (`実際に改行をしてみる`);
式の挿入は${式}
のように書きます。
ts
constcount = 10;console .log (`現在、${count }名が見ています。`);
ts
constcount = 10;console .log (`現在、${count }名が見ています。`);
式の部分は変数だけでなく、計算式や関数を使った式も書けます。
ts
`税込み${Math .floor (100 * 1.1)}円`
ts
`税込み${Math .floor (100 * 1.1)}円`
文字列リテラルは'
、"
、`
のどれを使うべきか?
前述のとおりJavaScriptでは文字列を表すときに3種類のクォートがありますが、どれを使えばいいのでしょうか。ここではJavaScriptのコードフォーマッターであるPrettierに倣い使い分けを紹介します。
なおこれは正解でもなければデファクトスタンダードというわけでもないので開発チームの基準があるならばそちらに従うことが望ましいです。
- 基本的に
"
を使用する - 文字列の中に
"
が含まれる場合は'
を使用する - 文字列展開する必要があるときは
`
を使用する
基本的に"
を使用する
ただの文字列で内部で変数展開をしていないのであれば"
を使用します。
文字列の中に"
が含まれる場合は'
を使用する
文字列の中に"
が含まれる場合はエスケープするのではなく'
を使用します。
文字列展開する必要があるときは`
を使用する
式を計算する必要があるときはテンプレートリテラル`
を使用します。
文字列の型注釈
TypeScriptのstring型の型注釈はstring
を用います。
ts
constmessage : string = "Hello";
ts
constmessage : string = "Hello";
名前がよく似た型にString
型がありますが、string
とは異なるので注意してください。
文字列結合
JavaScriptの文字列結合は文字列結合演算子(+
)を用います。number型の加算でも同じ演算子が使われます。
ts
"hello" + "world"
ts
"hello" + "world"
PHPでは文字列結合演算子(.
)と、数値の加算演算子(+
)の2つに分かれていますが、JavaScriptでは文字列結合と加算は同じプラス記号で表現するので、PHPからJavaScriptに来た人は注意してください。