TypeScript is a superset of JavaScript. Designed to enable enterprise-scale application development, TypeScript compiles to pure JavaScript. It provides important features such as classes, modules, and interfaces. TypeScript helps improve the quality of code by generating well-known and widely accepted JavaScript patterns while providing powerful development-time type-checking and discovery. TypeScript runs side-by-side with existing JavaScript and supports the concept of type definition libraries that can describe existing libraries for use by TypeScript even if they are written in pure JavaScript.
In this talk, Jeremy Likness will explore the use of TypeScript in enterprise-scale applications. He’ll discuss not only the technological benefits of TypeScript but also explore the impact to the software development lifecycle overall. TypeScript enables a development workflow that helps scale development teams, improves quality and decreases ramp-up time. It also encourages a logical approach to software construction that results in more reusable and easily maintainable code.
2. Consulting/Training
consulting
Wintellect helps you build better software,
faster, tackling the tough projects and solving
the software and technology questions that
help you transform your business.
Architecture, Analysis and Design
Full lifecycle software development
Debugging and Performance tuning
Database design and development
training
Wintellect's courses are written and taught by
some of the biggest and most respected names
in the Microsoft programming industry.
Learn from the best. Access the same
training Microsoft’s developers enjoy
Real world knowledge and solutions on
both current and cutting edge
technologies
Flexibility in training options – onsite,
virtual, on demand
Founded by top experts on Microsoft – Jeffrey Richter, Jeff Prosise, and John Robbins – we pull
out all the stops to help our customers achieve their goals through advanced software-based
consulting and training solutions.
who we are
About Wintellect
3. Consulting/Training
Long, long ago
Seriously, we’re talking decades
In a galaxy far, far away …
OK, so not that far away …
Someone got the bright idea that they would write a
new language in just 10 days
“I shall call it … Mocha! No, wait …
LiveScript … or, let’s make it even
more confusing … JAVASCRIPT!
Muwahahahahahahahah”
Once Upon a Time …
4. Consulting/Training
[] + [] = ?
[] – [] = ?
[] + {} = ?
[] – {} = ?
Array(5).join("Cool");
Array(5).join("Cool" + 1);
Array(5).join("Cool" – 1);
Here’s What We Were Left With …
5. Consulting/Training
Lightweight Scripting Language
Easy to Learn
Runs in Every Browser
Dynamic by Nature
Object-based
Built from day one to understand JSON
Just making sure you were awake
The Pros of JavaScript
6. Consulting/Training
Lightweight Scripting Language … asked to do
heavyweight work on the client
Easy to Learn think you’ve learned it
Runs differently in Every Browser
Dynamic by Nature
Object-based … prototypical, which is a con
when you are expecting object-oriented
Let’s go back to pros … it thankfully doesn’t do
well with SOAP
The Cons of JavaScript
7. Consulting/Training
Now we have to learn another language that behaves completely
differently. Hoisting just doesn’t make sense and is only useful for
JavaScript show-offs to stump their C#-loving enemies.
Once you finally learn to use === instead of == some API returns “2”
instead of 2 and everything breaks
It’s tough to trust an API that takes any number of parameters without
complaining
It insists on a camel-case convention and then doesn’t complain when
you accidently use Pascal case
Function scope. Really? If I have to write another self-invoking function …
What is this?
I now need a Mac and Windows with 12 Virtual Machines just to test
every combination of platform and browser we’re going to support
The Enterprise at War
8. Consulting/Training
JavaScript is here to stay
You can probably thank
smart phones
HTML5 isn’t helping things
either
Not even the servers are
safe with Node.js
It’s OK, things are better …
It’s Time to Bury the Hatchet
9. Consulting/Training
1995 – JavaScript ships
1995 – 2005 – Weeping and Gnashing of Teeth (although AJAX was available in
1999, it wasn’t even called that until 2005)
2006 – John releases jQuery and $ will never be the same
2008 – Engine gets a V8 (Google)
2009 – Jeremy releases CoffeeScript
2009 – Ryan releases Node.js
2010 – v1 of Knockout.js released
2011 – ECMAScript 5.1 provides hope for standards
2012 – TypeScript released (Microsoft)
2012 – v1 of Angular.js is released (after 3 years of development)
2013ish – asm.js (Mozilla)
Important Milestones
10. Consulting/Training
function (e) { return e.idx; }
e => e.idx;
for (var x = 0; x < 5; x++) { var y = x*2; }
for (var x = 0; x < 5; x++) { let y = x*2; }
const pi = "delicious.";
class MyClass {
constructor(a,b) {
public a = a;
private b = b;
}
get factor () { return private(this).b * a; }
}
// generators
// modules
// … and much, much more …
ES6 – Living in Harmony
11. Consulting/Training
Types
Enumerations
Generics
Interfaces and Interface Extension, Implementation
Optional Properties
Classes with Inheritance
Static and instance types
Private and Public Modifiers
Accessors
Modules
External Modules (node.js, require.js)
Ambient Declarations
Introducing TypeScript
“Say hello to my little friend.”
12. Consulting/Training
Immediate reduction in defect rates
Faster ramp-up for new developers
Shorter time to learn new APIs
Accelerated rate to get from “file -> new” to “story done”
C# developers spend less time asking themselves, “What is this?”
Code is easier to understand and maintain
Saying “refactor” no longer results in weird stares and people
trying to usher you into a back room
Bottom line: Estimated 2 – 4x improved productivity.
Before: Eight 2-Week Sprints. After: Four 2-Week Sprints.
Before: 100 points / sprint. After: 250 points / sprint.
Case Study