TypeScriptでreplaceAllが使えないときの対処
TypeScriptを書くことがあって、テキストから空白(全角と半角)の文字を取り除く、なんてことをしたいときにjsだとreplaceAllというのがある。
こんな風に書いていた。この場合はvalue
にtest
という文字が含まれていたら、全て消えることになる。
// ちょっとわかりにくいけど半角と全角のスペースがあるよ
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 */
このreplace
とreplaceAll
がそもそもなぜ二つあるのか?はよくわからない。
この記事の環境情報
- TypeScript 4.3.5
- JavaScript es6
- eslint 6.8.0
- サッカー試合みて眠気 45%
JavaScriptに関する他の記事を読む
- タグマネージャーでjsのloadイベントを発火させたいとき
- [JavaScriptをわかりやすく]removeメソッドで自身を動的に削除する
- [JavaScriptをわかりやすく]子要素をremoveChildで動的に削除する
- [JavaScriptをわかりやすく]insertAdjacentHTMLでタグを直接追加する
- [JavaScriptをわかりやすく]beforeとafterで指定した要素の前後に動的に要素を追加する
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら