<div dir="ltr"><div><div>On Wed, Feb 21, 2018 at 5:15 AM, Александр Ефремов <<a href="mailto:mr.efrem@gmail.com" target="_blank">mr.efrem@gmail.com</a>> wrote:</div><div>></div><div>> I don’t understand how it will be comfortable to write</div><div>> decorators for checking arguments of every function with</div><div>> different set of arguments:</div><div>></div><div>> ```</div><div>> function a(b: PrimitiveNumber) {}</div><div>></div><div>> function a1({ x: PrimitiveBoolean, d: PrimitiveString }) {}</div><div>></div><div>> function a2(e: PrimitiveString, { f: PrimitiveNumber, g: PrimitiveString }, j: PrimitiveBoolean) {}</div><div>> ```</div><div><br></div><div>You wouldn't. See my `@rttc` example earlier, it would be something like:</div><div><br></div><div>```js</div><div>@rttc(PrimitiveNumber)</div><div>function a(b) {}</div><div><br></div><div>@rttc({ x: PrimitiveBoolean, d: PrimitiveString })</div><div>function a1({ x, d }) {}</div><div><br></div><div>@rttc(PrimitiveString, { f: PrimitiveNumber, g: PrimitiveString }, PrimitiveBoolean)</div><div>function a2(e, { f, g }, j) {}</div><div>```</div><div><br></div><div>Or perhaps the decorations go on the parameters (avoiding the repetition of names in the destructuring above), in which case I probably would have a decorator per typecheck (but the great thing with it being general is you could choose a parameterized decorator instead):</div><div><br></div><div>```js</div><div>function a(@primitiveNumber b) {}</div><div><br></div><div>function a1({ @primitiveBoolean x, @primitiveString d }) {}</div><div><br></div><div>function a2(@primitiveString e, { @primitiveNumber f, @primitiveString g }, @primitiveBoolean j) {}</div><div>```</div><div><br></div><div>On Wed, Feb 21, 2018 at 5:26 AM, Aleksander Efremov <<a href="mailto:mr.efrem@gmail.com" target="_blank">mr.efrem@gmail.com</a>> wrote:</div><div>></div><div>> I offered use syntax which a lot of developers already know and it</div><div>> would be intuitively clear to use it.</div><div><br></div><div>It also conflicts with TypeScript's static types (it looks identical, does something different), so I don't see that being adopted.</div><div><br></div><div>-- T.J. Crowder</div></div><div><br></div></div>