JavaScriptでは文字列を扱う機会が多いのに、他の言語ではよくあるヒアドキュメントが無く、1行ごとに繋いだりしていた。
ES6/TypeScript(v1.4以降)では「テンプレートストリングス」という名前で使えるようになっている。最初は変数展開のコード例しか見当たらなかったので出来ないのかと思っていたが、複数行もちゃんとできる。
コード
ES6/TypeScript
"use strict";
let hoge = 123;
const HERE = `
<xml>
<tag>ANY</tag>
<tag>${hoge}</tag>
</xml>
`;
console.log(HERE);
出力:
% node src/Heredoc.js
<xml>
<tag>ANY</tag>
<tag>123</tag>
</xml>
参考:ES3/5むけコード
ちなみにtsc -t "ES5"
でコンパイルすると以下のコードが吐かれていた。
"use strict";
var hoge = 123;
var HERE = "\n\t<xml>\n\t\t<tag>ANY</tag>\n\t\t<tag>" + hoge + "</tag>\n\t</xml>\n";
console.log(HERE);
改行やタブが\n
や\t
に変換されるようだ。