TypeScript Gymnastics:

Why Are They So Powerful for You?

 Luca Del Puppo 

Luca Del Puppo

  • Senior Software Engineer
  • JavaScript enthusiast
  • TypeScript lover
  • “Youtuber”
  • “Writer”

Love sport: running, hiking

Love animals

Let's look at the following images_

Now compare the following images

with the previous ones_

What do these pictures have in common?_

declare function fastify<
  Server extends http2.Http2SecureServer,
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
  TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
> (opts: fastify.FastifyHttp2SecureOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>

declare function fastify<
  Server extends http2.Http2Server,
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
  TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
> (opts: fastify.FastifyHttp2Options<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>

declare function fastify<
  Server extends https.Server,
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
  TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
> (opts: fastify.FastifyHttpsOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>

declare function fastify<
  Server extends http.Server,
  Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>,
  Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>,
  Logger extends FastifyBaseLogger = FastifyBaseLogger,
  TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault
> (opts?: fastify.FastifyHttpOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger, TypeProvider> & SafePromiseLike<FastifyInstance<Server, Request, Reply, Logger, TypeProvider>>

Why can TypeScript help you?_

  • help the TEAM
  • prevent errors in production
  • make the Team aware of the changes
  • add Intellisense
  • ....
  • Where one ends up leaving the place for the other
  • What runs in production
  • What increases the DX
  • When creating everything using TypeScript or split the work in two-phase

What the agenda today_

TypeScript

JavaScript

TypeScript_

  • keyof
  • typeof
  • Mapped Type
  • Generics
  • Conditionals
  • Looping
  • Templates

We are NOT talking about JavaScript.

Conclusion_

  • Gymnastic is also good with TypeScript
  • Improve the DX of your system or library
  • Help your team during the development to prevent errors
  • Guide your team during the development
  • Make your team aware of what it is shipping

Pros_

DON'T FORGET TO TEST YOUR CODE!!!!

  • need time to be implemented
  • need knowledge
  • need time to maintain

Cons_

About this presentation_

https://slides.com/puppo92/typescript-gymnastics-why-are-they-so-powerful-for-you

About demo_

Luca Del Puppo

@puppo92

Luca Del Puppo

Puppo_92

@puppo

We are hiring

Thank you!_

TypeScript Gymnastics: Why Are They So Powerful for You?

By Luca Del Puppo

TypeScript Gymnastics: Why Are They So Powerful for You?

  • 251