# Type Challenges Various solutions to [Type Challenges](https://github.com/type-challenges/type-challenges) implemented with TypeBox ## Overview This test suite is used to stress test the TypeBox syntax engine ```typescript const Input = Type.Script(`{ x: string y: number z: boolean }`) const Output = Type.Script({ Input }, `Input extends { x: infer X, y: infer Y, z: infer Z } ? [X, Y, Z] : never`) // [string, number, boolean] ``` ## Solutions | Challenge | Solution | | :-- | :-- | | [00003-medium-omit](https://github.com/type-challenges/type-challenges/tree/main/questions/00003-medium-omit) | [Solution](https://tsplay.dev/W4oZ7m) | | [00004-easy-pick](https://github.com/type-challenges/type-challenges/tree/main/questions/00004-easy-pick) | [Solution](https://tsplay.dev/NaK8pW) | | [00005-extreme-readonly-keys](https://github.com/type-challenges/type-challenges/tree/main/questions/00005-extreme-readonly-keys) | [Solution](https://tsplay.dev/WzJ4QW) | | [00007-easy-readonly](https://github.com/type-challenges/type-challenges/tree/main/questions/00007-easy-readonly) | [Solution](https://tsplay.dev/mx1vzW) | | [00008-medium-readonly-2](https://github.com/type-challenges/type-challenges/tree/main/questions/00008-medium-readonly-2) | [Solution](https://tsplay.dev/wQk6jm) | | [00009-medium-deep-readonly](https://github.com/type-challenges/type-challenges/tree/main/questions/00009-medium-deep-readonly) | [Solution](https://tsplay.dev/N5r8dm) | | [00010-medium-tuple-to-union](https://github.com/type-challenges/type-challenges/tree/main/questions/00010-medium-tuple-to-union) | [Solution](https://tsplay.dev/ND36jw) | | [00011-easy-tuple-to-object](https://github.com/type-challenges/type-challenges/tree/main/questions/00011-easy-tuple-to-object) | [Solution](https://tsplay.dev/m0r9Dw) | | [00014-easy-first](https://github.com/type-challenges/type-challenges/tree/main/questions/00014-easy-first) | [Solution](https://tsplay.dev/wEXr3W) | | [00015-medium-last](https://github.com/type-challenges/type-challenges/tree/main/questions/00015-medium-last) | [Solution](https://tsplay.dev/mZA6DN) | | [00016-medium-pop](https://github.com/type-challenges/type-challenges/tree/main/questions/00016-medium-pop) | [Solution](https://tsplay.dev/Nde6Mm) | | [00018-easy-tuple-length](https://github.com/type-challenges/type-challenges/tree/main/questions/00018-easy-tuple-length) | [Solution](https://tsplay.dev/N7rZrw) | | [00043-easy-exclude](https://github.com/type-challenges/type-challenges/tree/main/questions/00043-easy-exclude) | [Solution](https://tsplay.dev/NrAqVw) | | [00057-hard-get-required](https://github.com/type-challenges/type-challenges/tree/main/questions/00057-hard-get-required) | [Solution](https://tsplay.dev/N9rZqm) | | [00059-hard-get-optional](https://github.com/type-challenges/type-challenges/tree/main/questions/00059-hard-get-optional) | [Solution](https://tsplay.dev/mMG66w) | | [00062-medium-type-lookup](https://github.com/type-challenges/type-challenges/tree/main/questions/00062-medium-type-lookup) | [Solution](https://tsplay.dev/w6rZyw) | | [00089-hard-required-keys](https://github.com/type-challenges/type-challenges/tree/main/questions/00089-hard-required-keys) | [Solution](https://tsplay.dev/WPnlkN) | | [00090-hard-optional-keys](https://github.com/type-challenges/type-challenges/tree/main/questions/00090-hard-optional-keys) | [Solution](https://tsplay.dev/w887Mw) | | [00213-hard-vue-basic-props](https://github.com/type-challenges/type-challenges/tree/main/questions/00213-hard-vue-basic-props) | [Solution](https://tsplay.dev/Nl4ORN) | | [00268-easy-if](https://github.com/type-challenges/type-challenges/tree/main/questions/00268-easy-if) | [Solution](https://tsplay.dev/wRv6xw) | | [00274-extreme-integers-comparator](https://github.com/type-challenges/type-challenges/tree/main/questions/00274-extreme-integers-comparator) | [Solution](https://tsplay.dev/wXBEOm) | | [00459-medium-flatten](https://github.com/type-challenges/type-challenges/tree/main/questions/00459-medium-flatten) | [Solution](https://tsplay.dev/NVz6GN) | | [04484-medium-istuple](https://github.com/type-challenges/type-challenges/tree/main/questions/04484-medium-istuple) | [Solution](https://tsplay.dev/Wo2KPm) | | [04499-medium-chunk](https://github.com/type-challenges/type-challenges/tree/main/questions/04499-medium-chunk) | [Solution](https://tsplay.dev/mqbjdW) | | [04518-medium-fill](https://github.com/type-challenges/type-challenges/tree/main/questions/04518-medium-fill) | [Solution](https://tsplay.dev/w2rZjw) | | [05153-medium-indexof](https://github.com/type-challenges/type-challenges/tree/main/questions/05153-medium-indexof) | [Solution](https://tsplay.dev/NBqZnw) | | [05310-medium-join](https://github.com/type-challenges/type-challenges/tree/main/questions/05310-medium-join) | [Solution](https://tsplay.dev/mbJ6om) | | [05317-medium-lastindexof](https://github.com/type-challenges/type-challenges/tree/main/questions/05317-medium-lastindexof) | [Solution](https://tsplay.dev/mAbZ4W) | | [05360-medium-unique](https://github.com/type-challenges/type-challenges/tree/main/questions/05360-medium-unique) | [Solution](https://tsplay.dev/mpBJXw) | | [05821-medium-maptypes](https://github.com/type-challenges/type-challenges/tree/main/questions/05821-medium-maptypes) | [Solution](https://tsplay.dev/m39Z2w) | | [07544-medium-construct-tuple](https://github.com/type-challenges/type-challenges/tree/main/questions/07544-medium-construct-tuple) | [Solution](https://tsplay.dev/wXB6Dm) | | [07561-extreme-subtract](https://github.com/type-challenges/type-challenges/tree/main/questions/07561-extreme-subtract) | [Solution](https://tsplay.dev/wOY6Em) | | [08640-medium-number-range](https://github.com/type-challenges/type-challenges/tree/main/questions/08640-medium-number-range) | [Solution](https://tsplay.dev/mLeZaW) | | [08804-hard-two-sum](https://github.com/type-challenges/type-challenges/tree/main/questions/08804-hard-two-sum) | [Solution](https://tsplay.dev/w1rg8N) | | [09160-hard-assign](https://github.com/type-challenges/type-challenges/tree/main/questions/09160-hard-assign) | [Solution](https://tsplay.dev/WKjE8m) | | [09384-hard-maximum](https://github.com/type-challenges/type-challenges/tree/main/questions/09384-hard-maximum) | [Solution](https://tsplay.dev/WJJERW) | | [26401-medium-json-schema-to-typescript](https://github.com/type-challenges/type-challenges/tree/main/questions/26401-medium-json-schema-to-typescript) | [Solution](https://tsplay.dev/w2rY4w) | | [27932-medium-mergeall](https://github.com/type-challenges/type-challenges/tree/main/questions/27932-medium-mergeall) | [Solution](https://tsplay.dev/NBqEkw) | | [27958-medium-checkrepeatedtuple](https://github.com/type-challenges/type-challenges/tree/main/questions/27958-medium-checkrepeatedtuple) | [Solution](https://tsplay.dev/mbJRBm) | | [28143-hard-optionalundefined](https://github.com/type-challenges/type-challenges/tree/main/questions/28143-hard-optionalundefined) | [Solution](https://tsplay.dev/mAbEQW) | | [29650-medium-extracttoobject](https://github.com/type-challenges/type-challenges/tree/main/questions/29650-medium-extracttoobject) | [Solution](https://tsplay.dev/mpB7pw) | | [30301-medium-isodd](https://github.com/type-challenges/type-challenges/tree/main/questions/30301-medium-isodd) | [Solution](https://tsplay.dev/m39n3w) |