mosya<TC> - 数値型を絶対値に変換する型を作ろう
この記事はmosya<TC>の問題の一つであるAbsolute型の解説になります。
問題
srting, number または bigint を受け取り、正の数を出力する Absolute 型を実装します。
例えば以下のようなコードを満たすように実装しましょう。
type Test = -100;
type Result = Absolute<Test>; // expected to be "100"
解答例
type Absolute<
T extends number | string | bigint
> = `${T}` extends `-${infer U}`
? U
: `${T}`;
まず、Tがnumber | string | bigintであることを条件として、T extends number | string | bigintという条件を指定します。
次に、${T}のように文字列リテラルを使い文字列に変換します。その上で、その文字列が先頭に-があるかどうかを判定します。
-がある場合は、Tは負の数なので、Tから-を取り除いたUを返します。
-がない場合は、Tは正の数なので、そのままTを返します。
Authored by

Godai@steelydylan
Webサービスを作るのが好きなWebエンジニア。子供が産まれたことをきっかけに独立し法人化。サービス開発が大好き。
好きな言語はTypeScript。
Related









