mosya

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}`;

まず、Tnumber | string | bigintであることを条件として、T extends number | string | bigintという条件を指定します。

次に、${T}のように文字列リテラルを使い文字列に変換します。その上で、その文字列が先頭に-があるかどうかを判定します。

-がある場合は、Tは負の数なので、Tから-を取り除いたUを返します。

-がない場合は、Tは正の数なので、そのままTを返します。

Authored by

筆者の写真

Godai@steelydylan

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

ReactやTypeScriptなどの周辺技術が学べる
オンライン学習サービスを作りました!

詳しくはこちら
mosya

mosyaはオンラインでHTML,CSS,JavaScriptを基本から学習できるサービスです。現役エンジニアが作成した豊富なカリキュラムに沿って学習を進めましょう。

© 2023 - mosya. All rights reserved.