◆ \ が関わると完全に書いたままの文字取得ができない
◆ Unicode 認識してエラーになったり 最後が \ だと syntax エラーだったり

書いた文字をそのまま使える便利な String.raw です
var text = String.raw`\n\r\s\b\\!"#$%&abcd`
console.log(text)
\n\r\s\b\\!"#$%&abcd

改行もエスケープ (\\) も本当にソースコードそのままです


一見便利なのですがダメなところもあります
よくある使い方で問題が起きるとしたらほとんどがファイルパスだと思います

その1

var file = String.raw`C:\img\01.jpg`

Uncaught SyntaxError: Octal literals are not allowed in template strings.

「\01」のところを Unicode 解釈しようとしたようで不正な値とみなされエラーです
var one = "\61"
console.log(one)
1

こういう書き方ができるためですね

その2

var dir = String.raw`C:\dir\`

Uncaught SyntaxError: Unterminated template literal


最後に 「\」 が来ることができません

かといって
var dir = String.raw`C:\dir\\`
console.log(dir)
にすると
C:\dir\\
と 「\」 が 2 つになります

最後が 「\」 なときは例外で別にくっつけるのが良さそうです
var dir = String.raw`C:\dir` + "\\"

1 つのテンプレートストリングにしたいならこんなこともできなくはないですが読みやすさが最悪です
var dir = String.raw`C:\dir${"\\"}`


C# の at string (ちゃんとした呼び方じゃないと思う) はこういう問題がないから使いやすいんですけどね
@ つけた時点で書いたままの文字列になるのと違って JavaScript だと @ 的な動きと通常の文字列の 2 パターンでパースするので仕方ないのかな
String.raw 関数では 2 つの内そのままの文字列の方を返してくれるだけで 組み込み的な JavaScript で再現できない動きはしてません