allow_none の対応 ◦ required=False は Optional Fields として変換 ▪ 例) { a?: number } ◦ allow_none は T | null という union type に変換 ▪ 例) { a?: number | null } • only, exclude といった部分スキーマ ◦ TS の Utility Type を利用した出力 ▪ only → Pick, exclude → Omit ◦ 例)Nested(FooSchema, only=["a","b"]) ▪ Pick<FooSchema, "a" | "b"> • これで FooSchema の a, b フィールドのみが 抽出できる type X = { a: number } type Y = { a: number | null } type Z = { a.: number } ./ a は number | undefined になる let x1:X = { a: 123 } ./ OK let x2:X = { a: null } ./ NG let y1:Y = { a: null } ./ OK let y2:Y = {} ./ NG let z1:Z = { a: 123 } ./ OK let z2:Z = {} ./ OK let y2:Z = { a: null } ./ NG x1 = y1 ./ NG x1 = { a: y1.a .? 0 } ./ OK Pick<{a:number, b:string}, "a"> ./ → {a: number} ./ aフィールドを取り出す Omit<{a:number, b:string}, "a"> ./ → {b: string} ./ aフィールドを排除する