🦵
ts-patternで複数のパターンのマッチングをする
ts-pattern
P.unionを使った複数型のマッチング
P.unionを使用することで、複数のパターンに一致するマッチングを行うことができます。
以下の例では、P.unionに並べたいずれかの型に一致するとき、マッチします。
animal.ts
import { match } from 'ts-pattern';
type Vehicle =
| { type: 'car'; brand: string; wheels: number }
| { type: 'bicycle'; brand: string; wheels: number }
| { type: 'airplane'; brand: string; engines: number };
const myVehicle: Vehicle = { type: 'car', brand: 'Toyota', wheels: 4 };
const vehicleDescription = match(myVehicle)
.with({ type: P.union('car','bicycle') }, (v) => `タイヤは${v.wheels}つついています`)
.otherwise('車でも自転車でもありません');
console.log(vehicleDescription);
上記のコードでは、typeがcar
または、bicycle
に一致する場合に タイヤは${v.wheels}つついています
を返します
その他の型に一致する場合は、車でも自転車でもありません
を返します。
終わりに
複数のパターンにマッチングするときに実行したいロジックや引数を使うことは時々あると思うので便利だと思いました。
また、型の受け皿を作ることができるので、
型の種類がいくつかあったり、型が固まっていない場合に使うとよりよいと思います。
Discussion