🍇

TypeScriptで0~nまでの整数だけを取る型を"楽をして"書く

2023/09/08に公開

https://qiita.com/KokiSakano/items/5f6b9e6fa42ed098638c

これを読んでわざわざ複雑な型を書かなくてもええやん。コードの文字列を生成してコピペすればいいやん、と思ったのでネタ。

0 ~ nのパターン

ブラウザのコンソールでも、node.jsでもなんでもいいので

console.log(`type MyRange0to100 = ${[...Array(101).keys()].join("|")};`)

と書きましょう。とすると

type MyRange = 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100;

という感じものが出力されるので、これをコピペして

type MyRange0to100 = 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100;

const ok : MyRange0to100 = 55;
//const error : MyRange0to100 = 101;

とやりましょう。

n ~ mの場合

たとえば 20 から100までの場合は

console.log(`type MyRange20to100 = ${[...Array(101 - 20).keys()].map(i=>i+20).join("|")};`)

と書いたら

type MyRange20to100 = 20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100;

が出てきます。

Discussion