Typescript

One coding language for any stack !!!

Agenda

Demo 

🚀 Typescript - Modern JS development

Stacks ⚡️ by Typescript

Fullstack Development 🎉

   Hello👋

I'm Siva

Architect @ Computer Enterprises Inc

#Mobile #IoT #Cloud

Orlando

@ksivamuthu

🚀 Typescript

Modern JS Development

What's wrong with Javascript in the application that scales?

We know less about our data

const { title, members } = this.request.body
  • What title means?
  • What members means?

🤔

interface Team {
    title: string;
    members: Person[]
}

const team: Team = this.request.body;
console.log(team.title);

😊

Typescript Benefits

  • Optional static typing
  • Type Inference - Benefits of the types, without actually using them
  • Access to ES6 & ES7 features
  • Finally compiled down to Javascript.
  • Great tooling support with Intellisense.
  • Community - Microsoft Open source, Google

Stacks ⚡️ by Typescript

What exactly is the

full-stack development?

  • Frontend

  • Backend

  • Database

It's a decade ago..

Now..

  • Frontend

  • Backend

  • Database

  • Cloud Infrastructure

  • Design

  • Development Tools

Can JS/TS do

Full-stack development?

Yes.

Is JS/TS right fit for

Full-stack development?

Architectural

Trade-offs

Pros

  • Common language, better team efficiency with fewer resources
  • Extensive Code reuse
  • High performance and speed
  • Huge talent pool
  • Extensive knowledge base
  • Opensource toolset with community support
 
 

Cons

  • Insufficiency with computation-heavy backend.
  • Relatively young technologies/tools.
  • Missing deep view on the particular stack.
  • The bottleneck of tools in any stack
 
 

Server Side

nestjs

A progressive Node.js framework for building efficient, reliable and scalable server-side applications.​

Reusability

uncoupled code blocks

Middlewares

Guards

Pipes

Interceptors

Filter Exception

@Controller()
@ApiUseTags('sessions')
@UseGuards(AuthGuard)
@UseInterceptors(LoggingInterceptor)
export class SessionController {
    constructor(private readonly sessionService: SessionService) {}

    @Get()
    public async findAll() {
        return this.sessionService.findAll();
    }

    @Get(':id')
    public async findById(@Param('id', new ParseIntPipe())id: number) {
        return this.sessionService.findById(id);
    }

    @Post()
    @UseGuards(RoleGuard)
    public async create(@Body() sessionDto: SessionDTO) {
        return this.sessionService.create(sessionDto);
    }
}

Dependency Injection

Use guards / interceptors at this route

Use guards / interceptors at all routes

Pipes

Decorators

Integration

Websockets

Database

  • Written in Typescript
  • Influenced by Hibernate and Entity Framework
  • Easy to learn
  • Easy to maintain
  • Typescript classes allow the extension for custom logic
  • Well documented
  • Built-in Cache (with a catch)
  • Amazing knex like query builder

Why TypeORM?

Cloud Infrastructure

const appService = new azure.appservice.AppService(customImage, {
    resourceGroupName: resourceGroup.name,
    appServicePlanId: appServicePlan.id,
    appSettings: {
      WEBSITES_ENABLE_APP_SERVICE_STORAGE: "false",
      DOCKER_REGISTRY_SERVER_URL: pulumi.interpolate`https://${registry.loginServer}`,
      DOCKER_REGISTRY_SERVER_USERNAME: registry.adminUsername,
      DOCKER_REGISTRY_SERVER_PASSWORD: registry.adminPassword,
      // Our custom image exposes port 9000.
      WEBSITES_PORT: "9000",
    },
    siteConfig: {
        alwaysOn: true,
        linuxFxVersion: pulumi.interpolate`DOCKER|${myImage.imageName}`,
    },
    httpsOnly: true,
});

export const appServiceEndpoint = pulumi.interpolate`https://${appService.defaultSiteHostname}`;

Extensible dev tools for Monorepos

Demo ✨

Reference

Thank you !!!

Typescript - Fullstack

By Sivamuthu Kumar

Typescript - Fullstack

  • 836