{"id":7896,"date":"2015-10-22T12:15:29","date_gmt":"2015-10-22T09:15:29","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=7896"},"modified":"2015-10-19T10:59:24","modified_gmt":"2015-10-19T07:59:24","slug":"developing-large-scale-applications-typescript","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/","title":{"rendered":"Developing Large-Scale Applications with TypeScript"},"content":{"rendered":"<p>As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a large-scale project from scratch using TypeScript.<\/p>\n<p>A year ago, with a team of eight front-end developers, we started rebuilding the entire Wix eCommerce solution; the new product is called WixStores.<\/p>\n<p>Most of the developers worked on the codebase at the same time. And working together without breaking one another\u2019s code was a challenge.<\/p>\n<p>The WixStores application was divided into several small projects. We started using TypeScript for only one of the projects. The others used pure JavaScript. After seeing the benefits of TypeScript, we decided to use it for all of the projects.<\/p>\n<h2>Developing Large-Scale Applications Today<\/h2>\n<p>Large-scale web applications are usually divided into several layers: the framework (such as AngularJS, Ember, or Backbone), the view (HTML with CSS, SASS, or LESS), and the language.<\/p>\n<p>This blog post is focused on the language layer. Obviously, writing pure JavaScript is an option. But in a large-scale web application, it is less than ideal. Instead, there are languages that compile to JavaScript. These languages are very helpful as you will see next, and there are already a few of them. The most well known are CoffeeScript, ClojureScript, Dart, and TypeScript.<\/p>\n<h2>So, Why Choose TypeScript?<\/h2>\n<h3>Technology Decoupling<\/h3>\n<p>CoffeeScript and Dart are languages that compile to JavaScript. Unfortunately, the generated JavaScript does not look anything like the original code. It is hard to understand, read, and debug. On the other hand, TypeScript is a superset of JavaScript. TypeScript generates JavaScript code that is easy to read and debug, and that looks very much like the original TypeScript code. This means that if (for any reason) you wish to return to plain JavaScript, you can take the generated JavaScript and work with it directly. In other words, there is no dependency on TypeScript, so it is easy to stop using it. With CoffeeScript and Dart it would be difficult or even impossible to do that.<\/p>\n<h3>Type Safety<\/h3>\n<p>As the name suggests, TypeScript is a strongly typed language, and type safety is the most important added value that TypeScript offers. When creating a small to medium JavaScript application with one or two developers, it\u2019s OK to go without any type safety. But when the application grows, that growth might lead to messy code that is very hard to maintain and debug.<\/p>\n<p>Taking advantage of types means that you will get type errors at compile time instead of runtime (or not at all). And when I\u2019m saying \u201ctypes,\u201d I don\u2019t just mean numbers or strings, I mean interfaces with a very clear definition. For example:<\/p>\n<pre class=\" brush:js\">interface CatalogAPI {\r\n  productsCount \u00a0: number;\r\n \u00a0defaultCategory \u00a0: Category;\r\n \u00a0loadProductDetails(productId : string):ng.IPromise&lt;DetailedProduct&gt;;\r\n \u00a0getProducts(maxProducts? : number):Product[];\r\n \u00a0updateProduct(product : Product | DetailedProduct):boolean;\r\n}<\/pre>\n<h2>Three Benefits of Type Safety<\/h2>\n<h3>It\u2019s Optional<\/h3>\n<p>Type safety is a wonderful feature, but you don\u2019t have to use it if you don\u2019t want to.<\/p>\n<p>On the WixStores team, we were strict about types when defining a class API. We wanted to be sure that the developer who calls an API will know how to work with it. Any misuse of the API or breaking changes to the API will raise compile errors.<\/p>\n<p>Because TypeScript type safety is optional, in the internal function implementation, we allowed the freedom to work with no types. It was up to each developer to decide whether to use it.<\/p>\n<h3>It\u2019s Just Another Test<\/h3>\n<p>The result of TypeScript\u2019s compilation is of course JavaScript. The most obvious difference between the TypeScript code and the generated code is that the types have been removed\u2014they are used during the compilation phase only. You can think of it as another test that runs at build time to verify that all the function calls are valid. We nicknamed it WarningScript. <img decoding=\"async\" src=\"http:\/\/engineering.wix.com\/wp-includes\/images\/smilies\/simple-smile.png\" alt=\"\" \/><\/p>\n<h3>API Definitions and External Libraries<\/h3>\n<p>Interfaces are great for describing APIs. For example:<\/p>\n<pre class=\" brush:js\">function listProducts(products) { ... }<\/pre>\n<p>This function definition does not tell you whether <b><i>products<\/i><\/b> is a list of actual product objects or a list of product IDs. Also, you cannot tell whether this function returns a result. The only way to get this information is to investigate the actual code, which wastes time.<\/p>\n<p>On the other hand, an API like this:<\/p>\n<pre class=\" brush:js\">function listProducts(products:Product[]):Product[] { ... }<\/pre>\n<p>Tells you at a glance that <b><i>products<\/i><\/b> is an array of <b><i>Product <\/i><\/b>objects. The result is an array of <b><i>Product<\/i><\/b> objects. As you can see, the API can fully describe the function implementation without having to investigate the implementation. And most IDEs can work with this information and will give you real code completion and not just an estimation.<\/p>\n<p>Working with external libraries like Underscore or jQuery might also be a challenge; you can look up the API by searching the web or investigating the library code. But when working with types it is much easier to find out how to work with the library correctly. You can find definition files for almost any library at <a href=\"https:\/\/github.com\/borisyankov\/DefinitelyTyped\">DefinitelyTyped<\/a>. Again, IDE code completion and compile-time type checking will use this information to alert you of any misuse of the API.<\/p>\n<p>While it is possible to address this problem by annotating code with JSDoc-style comments, this approach relies on developers to read the comments to understand API contracts. However, comments cannot truly replace tooling support to guard against lack of types.<\/p>\n<h3>ES6<\/h3>\n<p>ECMAScript 6 is a great leap forward for the JavaScript language. There are loads of cool features, and the code is much more organized and readable.<\/p>\n<p>So far, TypeScript implemented a few of its features like modules, classes, arrow functions, and more. TypeScript (see the <a href=\"https:\/\/github.com\/Microsoft\/TypeScript\/wiki\/Roadmap\">roadmap<\/a>) is closing the gap even further and will include almost all ES6 features with the addition of metadata and annotations. This means that you can use these features today and the compiler will generate the required code (same as <a href=\"https:\/\/github.com\/google\/traceur-compiler\">Traceur<\/a>).<\/p>\n<h3>Community<\/h3>\n<p>TypeScript was created about three years ago and is constantly being updated. Lately, TypeScript is getting more and more attention. The AngularJS team and Microsoft recently <a href=\"http:\/\/blogs.msdn.com\/b\/somasegar\/archive\/2015\/03\/05\/typescript-lt-3-angular.aspx\">announced<\/a> that Angular version 2 will be written in TypeScript. Facebook is also pushing in the same direction with <a href=\"http:\/\/flowtype.org\">F<\/a><a href=\"http:\/\/flowtype.org\/\">low<\/a>, a static type checker for JavaScript that is compatible with TypeScript.<\/p>\n<h2>Can It Be That Good? What Are the Cons?<\/h2>\n<h3>Boilerplate Code<\/h3>\n<p>Working with types, classes, and interfaces can lead to over-engineering. Many Java developers feel that they waste too much time on boilerplate code just to define a class. This can also happen in TypeScript if you are not careful. When a language gives you tools, you can abuse them.<\/p>\n<p>Generics (type safety feature) are a good example. We did not create our own classes that use generics, but we did use generics from external libraries like AngularJS Promises.<\/p>\n<h3>IDE Support<\/h3>\n<p>There are plugins for almost all the common IDEs, including Sublime, IntelliJ, WebStorm, Vim, and even Emacs. But they are not perfect. Sometimes you will see an error in the IDE but not at compile time (in other words, a bug in the IDE plugin). In addition, you would expect the IDE to take advantage of the type definitions to let the developer navigate more easily within the code. But some IDEs do not do it.<\/p>\n<p>On the plus side, the TypeScript team is now working on better tooling support and soon we will see much better IDE support.<\/p>\n<h3>Popularity<\/h3>\n<p>Despite all the attention that TypeScript is getting lately, it is still not that popular, so it\u2019s not easy to find solutions to problems. For example, at first I didn\u2019t understand whether to use internal or external modules, and I could not find enough information online about this topic. However, I expect that as more developers begin using TypeScript, more solutions will be available via Stack Overflow, Google, and other online resources.<\/p>\n<p>Also, some developers may need to learn how to use the language, unless they are up to date with ES6 or came from .NET.<\/p>\n<h2>Conclusion<\/h2>\n<p>As I\u2019ve mentioned throughout, large-scale web applications are not easy to deal with when using plain JavaScript. Yes, ES6 will help organize large projects (any front-end developer should get familiar with it as soon as possible), but this is not enough for large-scale applications. Type safety can help reduce the time wasted on simple human errors, and much like TDD, it gives you the comfort of knowing that your code is covered by tests.<\/p>\n<p>From type safety, ES6 support, and the current attention that TypeScript is getting, to the simplicity of reading and debugging the JavaScript code it generates, TypeScript is currently the best pick for large-scale applications. I don\u2019t see us going back to coding in plain JavaScript.<\/p>\n<p>So, if your team is larger than two or three people, give TypeScript a try when developing your next large-scale web application. If you don\u2019t like it, just use the generated code.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/engineering.wix.com\/2015\/09\/30\/developing-large-scale-applications-with-typescript\/\">Developing Large-Scale Applications with TypeScript<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/wcg\/\">WCG partner<\/a> Yoav Abrahami at the <a href=\"http:\/\/engineering.wix.com\/\">Wix IO<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a large-scale project from scratch using TypeScript. A year ago, with a team of eight front-end developers, we started rebuilding the entire Wix eCommerce solution; the new product is &hellip;<\/p>\n","protected":false},"author":102,"featured_media":920,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[76],"class_list":["post-7896","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-typescript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Developing Large-Scale Applications with TypeScript - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Developing Large-Scale Applications with TypeScript - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-22T09:15:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Yoav Abrahami\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yoav Abrahami\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/\"},\"author\":{\"name\":\"Yoav Abrahami\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f282e4275599da4b4305162c7db5efe7\"},\"headline\":\"Developing Large-Scale Applications with TypeScript\",\"datePublished\":\"2015-10-22T09:15:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/\"},\"wordCount\":1483,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"keywords\":[\"TypeScript\"],\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/\",\"name\":\"Developing Large-Scale Applications with TypeScript - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"datePublished\":\"2015-10-22T09:15:29+00:00\",\"description\":\"As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Developing Large-Scale Applications with TypeScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f282e4275599da4b4305162c7db5efe7\",\"name\":\"Yoav Abrahami\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/44fe92dd3583dfcc6856e5c8c4a0a9ef8e29b3de8a18d296aea9402e0bc023a4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/44fe92dd3583dfcc6856e5c8c4a0a9ef8e29b3de8a18d296aea9402e0bc023a4?s=96&d=mm&r=g\",\"caption\":\"Yoav Abrahami\"},\"description\":\"Yoav is the Chief Architect at Wix.com, working with developers and operations to build the company's future products as well as accelerating and improving development processes. Prior to joining Wix, Yoav was an Architect at Amdocs Cramer OSS division. Yoav holds a MS in Physics and a BS in Computer Science from the Tel Aviv University.\",\"sameAs\":[\"http:\/\/engineering.wix.com\/\",\"http:\/\/il.linkedin.com\/in\/yoavabrahami\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/yoav-abrahami\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Developing Large-Scale Applications with TypeScript - Web Code Geeks - 2026","description":"As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/","og_locale":"en_US","og_type":"article","og_title":"Developing Large-Scale Applications with TypeScript - Web Code Geeks - 2026","og_description":"As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a","og_url":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2015-10-22T09:15:29+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","type":"image\/jpeg"}],"author":"Yoav Abrahami","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Yoav Abrahami","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/"},"author":{"name":"Yoav Abrahami","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f282e4275599da4b4305162c7db5efe7"},"headline":"Developing Large-Scale Applications with TypeScript","datePublished":"2015-10-22T09:15:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/"},"wordCount":1483,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","keywords":["TypeScript"],"articleSection":["JavaScript"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/","url":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/","name":"Developing Large-Scale Applications with TypeScript - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","datePublished":"2015-10-22T09:15:29+00:00","description":"As a front-end developer, you\u2019ve probably heard about TypeScript. Maybe you even tried using it. But not many developers know what it is like to build a","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/javascript\/developing-large-scale-applications-typescript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"JavaScript","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/"},{"@type":"ListItem","position":3,"name":"Developing Large-Scale Applications with TypeScript"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/f282e4275599da4b4305162c7db5efe7","name":"Yoav Abrahami","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/44fe92dd3583dfcc6856e5c8c4a0a9ef8e29b3de8a18d296aea9402e0bc023a4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/44fe92dd3583dfcc6856e5c8c4a0a9ef8e29b3de8a18d296aea9402e0bc023a4?s=96&d=mm&r=g","caption":"Yoav Abrahami"},"description":"Yoav is the Chief Architect at Wix.com, working with developers and operations to build the company's future products as well as accelerating and improving development processes. Prior to joining Wix, Yoav was an Architect at Amdocs Cramer OSS division. Yoav holds a MS in Physics and a BS in Computer Science from the Tel Aviv University.","sameAs":["http:\/\/engineering.wix.com\/","http:\/\/il.linkedin.com\/in\/yoavabrahami"],"url":"https:\/\/www.webcodegeeks.com\/author\/yoav-abrahami\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/7896","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=7896"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/7896\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/920"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=7896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=7896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=7896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}