Schema.typeSchema
入力変換 (I → A)、encoding、decodingなどのロジックを取り除き、最終的に得られる 型 A に対する制約のみを持つ Schema を生成する
削られるもの
NumberFromString のような 変換ロジック
デコード・エンコードの定義
入力型 I に依存する部分
残るもの
型そのもの(number など)
greaterThanOrEqualTo(2) のような 制約(refinement)
例
こういうSchemaがあるとする
code:ts
const Original = Schema.Struct({
quantity: Schema.NumberFromString.pipe(
Schema.greaterThanOrEqualTo(2)
)
})
入力はstringで、numberに変換しつつ値のバリデーションも行うもの
typeSchema を適用する
code:ts
const TypeSchema = Schema.typeSchema(Original)
これは以下と等価になる
code:ts
const TypeSchema2 = Schema.Struct({
quantity: Schema.Number.pipe(
Schema.greaterThanOrEqualTo(2)
)
})
つまり、「stringを入力に取る」という部分が消える