parseIntのradixにnumberを許さなければいい
予期せぬ parseInt 事故を防ぐ抜本的な解決方法
code:ts
declare global {
function parseInt(str: string, radix: 2|10|16): number;
function parseInt(str: string, ..._: unknown[]): never;
}
https://www.typescriptlang.org/play?isolatedModules=true#code/JYWwDg9gTgLgBAcgQbgLACgMBMCmBjAGwEMoc4BzAiAIyILgG8M44AzAVwDs8ZgJO4YEgGccASU4wAFMJhQAXHFlRgncgBo4UIlmAAPRQCYAPgEYADGYBsASkWd2Iajihp0LDt179BI8ZJk5RWVVDTgAOkiAfUUuAGtOCAB3TgBtAF07OE4cADcXNwBfDAw8fllsx1M4AF5fKFEJaQQLBE1DG2Q4AHpuyqcXUvL4BxBDWvrGgJbzNrgLTp6+0ecoIc4K0YBmCaEG-2bWzVNbLt7+1fXNxwAWXb8mqRm5gE5F85z8tfQyjfhSeB1VIAIlMwM0oPMwPS4RARDAUj2Uxg72WeRcGQwQA
そもそもECMAScriptの仕様で 2から36までの整数でなければ無条件に NaN になることが決められている。
https://tc39.es/ecma262/multipage/global-object.html#sec-parseint-string-radix
そしてアプリケーション中でパースしたい数値の基数などたいてい10か16、時々2くらいだろう。
必要な基数以外は許さない型定義を与えてしまえば、 parseInt はもうほとんど怖くない。
#TypeScript