ͯѻ͏Α͏ʹ࣮͞Ε͍ͯΔ - ܕೖʮʰ ͔ʹ T ͷܕΛల։ͯ͠Ͷʱͱ͍͏໋ྩʯͷΑ͏ͳͷ - طଘͷ TypeScript Ͱܕೖͱݟͳ͞ΕΔՕॴ Conditional Type ͷΈ ※ Type Substitution ࣗମɺ Conditional Type ͷͨΊʹ࣮͞ΕͨΈ type Condition<T, S, U> = T extends S // ͜ͷ T ܕύϥϝʔλ ? T // ͜ͷ T ܕೖ : U
ͱɺ΄ͱΜͲͷจ຺Ͱಉ͡ҙຯ - unknown Top Type Ͱ͋ΔͨΊɺطଘͷ TS ʹ ʮ unknown Λ੍ ͱͨ͠ܕೖʯଘࡏ͠ͳ͍ ʢ࡞Εͳ͍Α͏ʹͳ͍ͬͯͨ) ͢ͳΘͪʮunknown Λ੍ͱͨ͠ܕೖ NoInferͰ͋Δʯཱ͕͢Δ - ʮܕਪதʹ unknown Λ੍ͱͨ͠ܕೖ͕ग़ݱͨ͠ΒɺਪΛఀࢭ ͢Δʯͱ͍͏ϩδοΫ͕Ճ͞Ε͍ͯΔ͚ͩ - NoInfer طଘͷ Type checker ͕࣋ͭΈ͚ͩͰ࣮ݱ͞Ε͍ͯΔ type NoInfer<T> = T type Condition<T, S, U> = T extends S ? T // ͜ͷ T ܕೖ. ͨͩ͠ T ੍ S Λຬ͍ͨͯ͠Δ͜ͱ͕อূ͞Ε͍ͯΔ : U