TypeScriptを書くことがあって、テキストから空白(全角と半角)の文字を取り除く、なんてことをしたいときにjsだとreplaceAllというのがある。

replaceAll

こんな風に書いていた。この場合はvaluetestという文字が含まれていたら、全て消えることになる。

// ちょっとわかりにくいけど半角と全角のスペースがあるよ
value.replaceAll(/[  ]/g, '')

ただ、自分の環境だと以下のような感じでエラーが出ちゃって、TypeScriptが許してくれない。

TS2550: Property 'replaceAll' does not exist on type 'string'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2021' or later.

そこで、replaceに置き換えてみたら、こっちは大丈夫だった。

// ちょっとわかりにくいけど半角と全角のスペースがあるよ
value.replace(/[  ]/g, '')

ところで、上記のコードでeslintを実行すると以下のように怒られてしまった。

変なスペースが入っているよ、と警告を受けてしまった。

error  Irregular whitespace not allowed  no-irregular-whitespace

この場合は意図的に空白を置いているので、eslintに無視してくださいとお伝えするのがよい。

/* eslint-disable no-irregular-whitespace */
value.replace(/[  ]/g, '')
/* eslint-enable no-irregular-whitespace */

このreplacereplaceAllがそもそもなぜ二つあるのか?はよくわからない。

この記事の環境情報

  • TypeScript 4.3.5
  • JavaScript es6
  • eslint 6.8.0
  • サッカー試合みて眠気 45%