Book Image

TypeScript Blueprints

By : Ivo Gabe de Wolff
Book Image

TypeScript Blueprints

By: Ivo Gabe de Wolff

Overview of this book

TypeScript is the future of JavaScript. Having been designed for the development of large applications, it is now being widely incorporated in cutting-edge projects such as Angular 2. Adopting TypeScript results in more robust software - software that is more scalable and performant. It's scale and performance that lies at the heart of every project that features in this book. The lessons learned throughout this book will arm you with everything you need to build some truly amazing projects. You'll build a complete single page app with Angular 2, create a neat mobile app using NativeScript, and even build a Pac Man game with TypeScript. As if fun wasn't enough, you'll also find out how to migrate your legacy codebase from JavaScript to TypeScript. This book isn't just for developers who want to learn - it's for developers who want to develop. So dive in and get started on these TypeScript projects.
Table of Contents (16 chapters)
TypeScript Blueprints
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface

Parsing an expression


A parser can convert a string to some data type. The first guess of the type of a parser would be:

type Parser<T> = (source: string) => T; 

Since we will also use a parser to parse a part of the source. For instance, when parsing a factorial, we first parse the operand (which hopefully has one character remaining, the exclamation mark) and then parse the exclamation mark. Thus, a parser should return the resulting data and the remaining source:

type Parser<T> = (source: string) => [T, string]; 

A constant (such as 5.2) and a variable (5:2) both start with a number. Because of that, a parser should return an array with all options:

type Parser<T> = (source: string) => [T, string][]; 

To demonstrate how this works, imagine that there are two parsers: one that parses A, one that parses AA and one that parses AB. The string AAA could be parsed with a sequence of these parsers in three different ways: A-A-A, A-AA, and AA-A. Now imagine...