SlideShare a Scribd company logo
1 of 29
TypeScript
  Reagan Hwang
  Microsoft Korea
Application scale JavaScript
   development is hard.
TypeScript is a language for application
    scale JavaScript development.
TypeScript is a typed superset of JavaScript
    that compiles to plain JavaScript.
TypeScript is a typed superset of JavaScript
     that compiles to plain JavaScript.

Any browser. Any host. Any OS. Open Source.
TypeScript
• Starts with JavaScript
   • All JavaScript code is TypeScript code, simply copy and paste
   • All JavaScript libraries work with TypeScript


• Optional static types, classes, modules
   • Enable scalable application development and excellent tooling
   • Zero cost: Static types completely disappear at run-time


• Ends with JavaScript
   • Compiles to idiomatic JavaScript
   • Runs in any browser or host, on any OS
TypeScript Type System
Type System
• Formalization of JavaScript’s types
   • Static representation of JavaScript’s dynamic type system


• Type inference and structural typing
   • In practice very few type annotations are necessary


• Works with existing JavaScript libraries
   • Declaration files can be written and maintained separately


• Not “provably type safe”
   • Types reflect intent but do not provide guarantees
Type Annotation
Object types : interface
TypeScript classes and modules
Classes and modules
• Scalable application structuring
   • Classes, Modules, and Interfaces enable clear contracts between components


• Aligned with emerging standards
   • Class, Module, and Arrow Function syntax aligns with ECMAScript 6 proposals


• Supports popular module systems
   • CommonJS and AMD modules in any ECMAScript 3 compatible environment
Class
Class Features
class Point {                                                  class Point3D extends Point {
    x: number;                                                     constructor (x: number, y: number, public z: number) {
    private color: string;                                             super(x, y);
    constructor (x: number, public y: number = 0) {                }
        this.x = x;                                                dist() {
        this.color = "red";                                            var d = super.dist();
    }                                                                  return Math.sqrt(d * d + this.z * this.z);
    dist() {                                                       }
        return Math.sqrt(this.x * this.x + this.y * this.y);   }
    }
    get distance() {                                           var p = new Point(10);
        return Math.sqrt(this.x * this.x + this.y * this.y);   p.x = 10;
    }                                                          p.y = 20;
    static origin = new Point(0, 0);
}
Module
Application Scale TypeScript
TypeScript preview
• Compiler
   • Open Source, written in TypeScript

• Tooling
   • Visual Studio language service, browser hosted playground

• Libraries
   • Static typing of DOM, jQuery, node.js, WinRT, WinJS, …

• And More
   • Lots of samples and formal Language Specification
Editors
• TypeScript is available in Sublime Text, Vi, Emacs editor
  • http://blogs.msdn.com/b/interoperability/archive/2012/10/01/sublime-
    text-vi-emacs-typescript-enabled.aspx
Nodejs
Visual Studio
• TypeScript for Visual Studio 2012
  • http://www.microsoft.com/en-us/download/details.aspx?id=34790
• Web Essentials 2012
     • http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-
       6f451ea3bea6
Sublime Text
Interface 응용
interface Accumulator {
    clear(): void;
    add(x: number): void;
    result(): number;
}

function makeAccumulator():Accumulator {
    var sum = 0;
    return {
        clear: function () { sum = 0; },
        addx: function (value: number) { sum += value; },
        result: function () { return sum; }
    }
}
var a = makeAccumulator();
a.add(5);
Definition 파일(lib.d.ts)
document.onmousemove = function (e) {

}

onmousemove: (ev: MouseEvent) => any;
Arrow Function Expressions
• TypeScript supports arrow function expressions, a new feature planned for ECMAScript
  6. Arrow function expressions are a compact form of function expressions that omit the
  function keyword and have lexical scoping of this.

class Tracker {
    count = 0;
    start() {
        window.onmousemove = e => {
            this.count++;
            console.log(this.count);
        }
    }
}
var t = new Tracker();
t.start();
TypeScript Roadmap
• 0.8.2
    • Improve the build system
    • Improve compiler performance
• 0.8.3
    • Generics
    • Improvements to type system to help model a larger variety of JS libraries
• 0.9.x
    • Align with ECMAScript 6
    • Community site for .d.ts files
    • Usability improvements to VS plugin
• 1.x
    • A handful of language features are scheduled for exploration after the 1.0 release, including:
          • Async/Await
          • Mixins
          • Protected access
    • ES6-compatible codegen
Ambient Declarations
• document
  declare var document;
  document.title = "Hello";   // Ok because document has been
  declared


• jQuery
  declare var $;
Function Types
function vote(candidate: string, callback: (result: string) => any) {
   // ...
}

vote("BigPig",
     function(result: string) {
         if (result === "BigPig") {
            // ...
         }
     }
);
Object Types
var MakePoint: () => {
    x: number; y: number;
};
Resources
• TypeScript Website
    • http://www.typescriptlang.org/#Download
• Introducing TypeScript
    • http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript
• Introducing TypeScript: A language for application-scale JavaScript development / build conference
  2012
    • http://channel9.msdn.com/Events/Build/2012/3-012
• Inside TypeScript
    • http://channel9.msdn.com/posts/Anders-Hejlsberg-Steve-Lucco-and-Luke-Hoban-Inside-TypeScript
• Introducing TypeScript / JSConf EU 2012
    • http://www.youtube.com/watch?v=3UTIcQYQ8Rw
• ECMAScript 6
    • http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/ECMAScript-6
• Getting started: TypeScript for Windows 8 Projects using Visual Studio 2012
    • http://blogs.msdn.com/b/yizhe/archive/2012/11/22/getting-started-typescript-for-windows-8-projects-using-visual-
      studio-2012.aspx
    • http://blog.tattoocoder.com/2012/10/typescript-for-windows-8-store-apps.html

More Related Content

What's hot

Spring Up Your Graph
Spring Up Your GraphSpring Up Your Graph
Spring Up Your GraphVMware Tanzu
 
Communication in Node.js
Communication in Node.jsCommunication in Node.js
Communication in Node.jsEdureka!
 
Writing RESTful web services using Node.js
Writing RESTful web services using Node.jsWriting RESTful web services using Node.js
Writing RESTful web services using Node.jsFDConf
 
Webinar: Securing your data - Mitigating the risks with MongoDB
Webinar: Securing your data - Mitigating the risks with MongoDBWebinar: Securing your data - Mitigating the risks with MongoDB
Webinar: Securing your data - Mitigating the risks with MongoDBMongoDB
 
Architecting Secure and Compliant Applications with MongoDB
Architecting Secure and Compliant Applications with MongoDB        Architecting Secure and Compliant Applications with MongoDB
Architecting Secure and Compliant Applications with MongoDB MongoDB
 
Capture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninjaCapture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninjaVito Flavio Lorusso
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular jsAndrew Alpert
 
Звиад Кардава "Android Things + Google Weave"
Звиад Кардава "Android Things + Google Weave" Звиад Кардава "Android Things + Google Weave"
Звиад Кардава "Android Things + Google Weave" IT Event
 
Groovy on Grails by Ziya Askerov
Groovy on Grails by Ziya AskerovGroovy on Grails by Ziya Askerov
Groovy on Grails by Ziya AskerovVuqar Suleymanov
 
Building Fast, Modern Web Applications with Node.js and CoffeeScript
Building Fast, Modern Web Applications with Node.js and CoffeeScriptBuilding Fast, Modern Web Applications with Node.js and CoffeeScript
Building Fast, Modern Web Applications with Node.js and CoffeeScriptroyaldark
 
[143]Inside fuse deview 2016
[143]Inside fuse   deview 2016[143]Inside fuse   deview 2016
[143]Inside fuse deview 2016NAVER D2
 
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...Matt Raible
 
jOOQ at Topconf 2013
jOOQ at Topconf 2013jOOQ at Topconf 2013
jOOQ at Topconf 2013Lukas Eder
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup PerformanceGreg Whalin
 
jclouds overview
jclouds overviewjclouds overview
jclouds overviewAdrian Cole
 
Get Back in Control of Your SQL with jOOQ at #Java2Days
Get Back in Control of Your SQL with jOOQ at #Java2DaysGet Back in Control of Your SQL with jOOQ at #Java2Days
Get Back in Control of Your SQL with jOOQ at #Java2DaysLukas Eder
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 
JavaFest. Nanne Baars. Web application security for developers
JavaFest. Nanne Baars. Web application security for developersJavaFest. Nanne Baars. Web application security for developers
JavaFest. Nanne Baars. Web application security for developersFestGroup
 
Micronaut For Single Page Apps
Micronaut For Single Page AppsMicronaut For Single Page Apps
Micronaut For Single Page AppsZachary Klein
 

What's hot (20)

Spring Up Your Graph
Spring Up Your GraphSpring Up Your Graph
Spring Up Your Graph
 
Communication in Node.js
Communication in Node.jsCommunication in Node.js
Communication in Node.js
 
Writing RESTful web services using Node.js
Writing RESTful web services using Node.jsWriting RESTful web services using Node.js
Writing RESTful web services using Node.js
 
Webinar: Securing your data - Mitigating the risks with MongoDB
Webinar: Securing your data - Mitigating the risks with MongoDBWebinar: Securing your data - Mitigating the risks with MongoDB
Webinar: Securing your data - Mitigating the risks with MongoDB
 
Architecting Secure and Compliant Applications with MongoDB
Architecting Secure and Compliant Applications with MongoDB        Architecting Secure and Compliant Applications with MongoDB
Architecting Secure and Compliant Applications with MongoDB
 
Capture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninjaCapture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninja
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular js
 
Звиад Кардава "Android Things + Google Weave"
Звиад Кардава "Android Things + Google Weave" Звиад Кардава "Android Things + Google Weave"
Звиад Кардава "Android Things + Google Weave"
 
Groovy on Grails by Ziya Askerov
Groovy on Grails by Ziya AskerovGroovy on Grails by Ziya Askerov
Groovy on Grails by Ziya Askerov
 
Node js for enterprise
Node js for enterpriseNode js for enterprise
Node js for enterprise
 
Building Fast, Modern Web Applications with Node.js and CoffeeScript
Building Fast, Modern Web Applications with Node.js and CoffeeScriptBuilding Fast, Modern Web Applications with Node.js and CoffeeScript
Building Fast, Modern Web Applications with Node.js and CoffeeScript
 
[143]Inside fuse deview 2016
[143]Inside fuse   deview 2016[143]Inside fuse   deview 2016
[143]Inside fuse deview 2016
 
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...
 
jOOQ at Topconf 2013
jOOQ at Topconf 2013jOOQ at Topconf 2013
jOOQ at Topconf 2013
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
jclouds overview
jclouds overviewjclouds overview
jclouds overview
 
Get Back in Control of Your SQL with jOOQ at #Java2Days
Get Back in Control of Your SQL with jOOQ at #Java2DaysGet Back in Control of Your SQL with jOOQ at #Java2Days
Get Back in Control of Your SQL with jOOQ at #Java2Days
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
JavaFest. Nanne Baars. Web application security for developers
JavaFest. Nanne Baars. Web application security for developersJavaFest. Nanne Baars. Web application security for developers
JavaFest. Nanne Baars. Web application security for developers
 
Micronaut For Single Page Apps
Micronaut For Single Page AppsMicronaut For Single Page Apps
Micronaut For Single Page Apps
 

Similar to JSLounge - TypeScript 소개

Visual studio 2008
Visual studio 2008Visual studio 2008
Visual studio 2008Luis Enrique
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkBob German
 
Roslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
Roslyn: el futuro de C# y VB.NET by Rodolfo FinochiettiRoslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
Roslyn: el futuro de C# y VB.NET by Rodolfo Finochietti.NET Conf UY
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...Sang Don Kim
 
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...Michael Rys
 
End-to-End SPA Development using TypeScript
End-to-End SPA Development using TypeScriptEnd-to-End SPA Development using TypeScript
End-to-End SPA Development using TypeScriptGil Fink
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java DevelopersYakov Fain
 
Building End-to-End Apps Using Typescript
Building End-to-End Apps Using TypescriptBuilding End-to-End Apps Using Typescript
Building End-to-End Apps Using TypescriptGil Fink
 
TypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation GuideTypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation GuideNascenia IT
 
Typescript in 30mins
Typescript in 30mins Typescript in 30mins
Typescript in 30mins Udaya Kumar
 
TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!Alessandro Giorgetti
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScriptDenis Voituron
 
Introduction to C3.net Architecture unit
Introduction to C3.net Architecture unitIntroduction to C3.net Architecture unit
Introduction to C3.net Architecture unitKotresh Munavallimatt
 
Connecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with EmbindConnecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with EmbindChad Austin
 
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...Data Con LA
 
Code is not text! How graph technologies can help us to understand our code b...
Code is not text! How graph technologies can help us to understand our code b...Code is not text! How graph technologies can help us to understand our code b...
Code is not text! How graph technologies can help us to understand our code b...Andreas Dewes
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScriptJeremy Likness
 

Similar to JSLounge - TypeScript 소개 (20)

Visual studio 2008
Visual studio 2008Visual studio 2008
Visual studio 2008
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
 
Next .NET and C#
Next .NET and C#Next .NET and C#
Next .NET and C#
 
Roslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
Roslyn: el futuro de C# y VB.NET by Rodolfo FinochiettiRoslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
Roslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
 
Roslyn: el futuro de C#
Roslyn: el futuro de C#Roslyn: el futuro de C#
Roslyn: el futuro de C#
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
 
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
 
End-to-End SPA Development using TypeScript
End-to-End SPA Development using TypeScriptEnd-to-End SPA Development using TypeScript
End-to-End SPA Development using TypeScript
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java Developers
 
Building End-to-End Apps Using Typescript
Building End-to-End Apps Using TypescriptBuilding End-to-End Apps Using Typescript
Building End-to-End Apps Using Typescript
 
TypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation GuideTypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation Guide
 
Typescript in 30mins
Typescript in 30mins Typescript in 30mins
Typescript in 30mins
 
TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
 
Introduction to C3.net Architecture unit
Introduction to C3.net Architecture unitIntroduction to C3.net Architecture unit
Introduction to C3.net Architecture unit
 
Connecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with EmbindConnecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with Embind
 
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
Big Data Day LA 2015 - Compiling DSLs for Diverse Execution Environments by Z...
 
Oops lecture 1
Oops lecture 1Oops lecture 1
Oops lecture 1
 
Code is not text! How graph technologies can help us to understand our code b...
Code is not text! How graph technologies can help us to understand our code b...Code is not text! How graph technologies can help us to understand our code b...
Code is not text! How graph technologies can help us to understand our code b...
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScript
 

More from Reagan Hwang

윈도우 스토어의 가능성
윈도우 스토어의 가능성윈도우 스토어의 가능성
윈도우 스토어의 가능성Reagan Hwang
 
IE10 PP4 update for W3C HTML5 KIG
IE10 PP4 update for W3C HTML5 KIGIE10 PP4 update for W3C HTML5 KIG
IE10 PP4 update for W3C HTML5 KIGReagan Hwang
 
3 Screen UX - uxcampseoul 2011
3 Screen UX - uxcampseoul 20113 Screen UX - uxcampseoul 2011
3 Screen UX - uxcampseoul 2011Reagan Hwang
 
사용자의 경험가치
사용자의 경험가치사용자의 경험가치
사용자의 경험가치Reagan Hwang
 
IE9에서 HTML5 개발하기
IE9에서 HTML5 개발하기IE9에서 HTML5 개발하기
IE9에서 HTML5 개발하기Reagan Hwang
 
김진우 2009 Uxeye A Unverified View From Hci Perspective
김진우 2009 Uxeye A Unverified View From Hci Perspective김진우 2009 Uxeye A Unverified View From Hci Perspective
김진우 2009 Uxeye A Unverified View From Hci PerspectiveReagan Hwang
 
Silverlight2 Security
Silverlight2 SecuritySilverlight2 Security
Silverlight2 SecurityReagan Hwang
 
Introducing Microsoft ux platforms
Introducing Microsoft ux platformsIntroducing Microsoft ux platforms
Introducing Microsoft ux platformsReagan Hwang
 
Designing Silverlight
Designing SilverlightDesigning Silverlight
Designing SilverlightReagan Hwang
 
Korean Silverlight Showcases
Korean Silverlight ShowcasesKorean Silverlight Showcases
Korean Silverlight ShowcasesReagan Hwang
 
Internet Explorer 8 Beta 2 Features For Better Browsing Experience
Internet Explorer 8 Beta 2 Features For Better Browsing ExperienceInternet Explorer 8 Beta 2 Features For Better Browsing Experience
Internet Explorer 8 Beta 2 Features For Better Browsing ExperienceReagan Hwang
 

More from Reagan Hwang (16)

윈도우 스토어의 가능성
윈도우 스토어의 가능성윈도우 스토어의 가능성
윈도우 스토어의 가능성
 
IE10 PP4 update for W3C HTML5 KIG
IE10 PP4 update for W3C HTML5 KIGIE10 PP4 update for W3C HTML5 KIG
IE10 PP4 update for W3C HTML5 KIG
 
3 Screen UX - uxcampseoul 2011
3 Screen UX - uxcampseoul 20113 Screen UX - uxcampseoul 2011
3 Screen UX - uxcampseoul 2011
 
사용자의 경험가치
사용자의 경험가치사용자의 경험가치
사용자의 경험가치
 
IE9에서 HTML5 개발하기
IE9에서 HTML5 개발하기IE9에서 HTML5 개발하기
IE9에서 HTML5 개발하기
 
Pp3 devweb
Pp3 devwebPp3 devweb
Pp3 devweb
 
Ux tech trends
Ux tech trendsUx tech trends
Ux tech trends
 
Html5 ie9
Html5 ie9Html5 ie9
Html5 ie9
 
김진우 2009 Uxeye A Unverified View From Hci Perspective
김진우 2009 Uxeye A Unverified View From Hci Perspective김진우 2009 Uxeye A Unverified View From Hci Perspective
김진우 2009 Uxeye A Unverified View From Hci Perspective
 
Silverlight2 Security
Silverlight2 SecuritySilverlight2 Security
Silverlight2 Security
 
Introducing Microsoft ux platforms
Introducing Microsoft ux platformsIntroducing Microsoft ux platforms
Introducing Microsoft ux platforms
 
Designing widget
Designing widgetDesigning widget
Designing widget
 
Introducing UX
Introducing UXIntroducing UX
Introducing UX
 
Designing Silverlight
Designing SilverlightDesigning Silverlight
Designing Silverlight
 
Korean Silverlight Showcases
Korean Silverlight ShowcasesKorean Silverlight Showcases
Korean Silverlight Showcases
 
Internet Explorer 8 Beta 2 Features For Better Browsing Experience
Internet Explorer 8 Beta 2 Features For Better Browsing ExperienceInternet Explorer 8 Beta 2 Features For Better Browsing Experience
Internet Explorer 8 Beta 2 Features For Better Browsing Experience
 

Recently uploaded

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

JSLounge - TypeScript 소개

  • 1. TypeScript Reagan Hwang Microsoft Korea
  • 2. Application scale JavaScript development is hard.
  • 3. TypeScript is a language for application scale JavaScript development.
  • 4. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
  • 5. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source.
  • 6. TypeScript • Starts with JavaScript • All JavaScript code is TypeScript code, simply copy and paste • All JavaScript libraries work with TypeScript • Optional static types, classes, modules • Enable scalable application development and excellent tooling • Zero cost: Static types completely disappear at run-time • Ends with JavaScript • Compiles to idiomatic JavaScript • Runs in any browser or host, on any OS
  • 8. Type System • Formalization of JavaScript’s types • Static representation of JavaScript’s dynamic type system • Type inference and structural typing • In practice very few type annotations are necessary • Works with existing JavaScript libraries • Declaration files can be written and maintained separately • Not “provably type safe” • Types reflect intent but do not provide guarantees
  • 10. Object types : interface
  • 12. Classes and modules • Scalable application structuring • Classes, Modules, and Interfaces enable clear contracts between components • Aligned with emerging standards • Class, Module, and Arrow Function syntax aligns with ECMAScript 6 proposals • Supports popular module systems • CommonJS and AMD modules in any ECMAScript 3 compatible environment
  • 13. Class
  • 14. Class Features class Point { class Point3D extends Point { x: number; constructor (x: number, y: number, public z: number) { private color: string; super(x, y); constructor (x: number, public y: number = 0) { } this.x = x; dist() { this.color = "red"; var d = super.dist(); } return Math.sqrt(d * d + this.z * this.z); dist() { } return Math.sqrt(this.x * this.x + this.y * this.y); } } get distance() { var p = new Point(10); return Math.sqrt(this.x * this.x + this.y * this.y); p.x = 10; } p.y = 20; static origin = new Point(0, 0); }
  • 17. TypeScript preview • Compiler • Open Source, written in TypeScript • Tooling • Visual Studio language service, browser hosted playground • Libraries • Static typing of DOM, jQuery, node.js, WinRT, WinJS, … • And More • Lots of samples and formal Language Specification
  • 18. Editors • TypeScript is available in Sublime Text, Vi, Emacs editor • http://blogs.msdn.com/b/interoperability/archive/2012/10/01/sublime- text-vi-emacs-typescript-enabled.aspx
  • 20. Visual Studio • TypeScript for Visual Studio 2012 • http://www.microsoft.com/en-us/download/details.aspx?id=34790 • Web Essentials 2012 • http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb- 6f451ea3bea6
  • 22. Interface 응용 interface Accumulator { clear(): void; add(x: number): void; result(): number; } function makeAccumulator():Accumulator { var sum = 0; return { clear: function () { sum = 0; }, addx: function (value: number) { sum += value; }, result: function () { return sum; } } } var a = makeAccumulator(); a.add(5);
  • 23. Definition 파일(lib.d.ts) document.onmousemove = function (e) { } onmousemove: (ev: MouseEvent) => any;
  • 24. Arrow Function Expressions • TypeScript supports arrow function expressions, a new feature planned for ECMAScript 6. Arrow function expressions are a compact form of function expressions that omit the function keyword and have lexical scoping of this. class Tracker { count = 0; start() { window.onmousemove = e => { this.count++; console.log(this.count); } } } var t = new Tracker(); t.start();
  • 25. TypeScript Roadmap • 0.8.2 • Improve the build system • Improve compiler performance • 0.8.3 • Generics • Improvements to type system to help model a larger variety of JS libraries • 0.9.x • Align with ECMAScript 6 • Community site for .d.ts files • Usability improvements to VS plugin • 1.x • A handful of language features are scheduled for exploration after the 1.0 release, including: • Async/Await • Mixins • Protected access • ES6-compatible codegen
  • 26. Ambient Declarations • document declare var document; document.title = "Hello"; // Ok because document has been declared • jQuery declare var $;
  • 27. Function Types function vote(candidate: string, callback: (result: string) => any) { // ... } vote("BigPig", function(result: string) { if (result === "BigPig") { // ... } } );
  • 28. Object Types var MakePoint: () => { x: number; y: number; };
  • 29. Resources • TypeScript Website • http://www.typescriptlang.org/#Download • Introducing TypeScript • http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript • Introducing TypeScript: A language for application-scale JavaScript development / build conference 2012 • http://channel9.msdn.com/Events/Build/2012/3-012 • Inside TypeScript • http://channel9.msdn.com/posts/Anders-Hejlsberg-Steve-Lucco-and-Luke-Hoban-Inside-TypeScript • Introducing TypeScript / JSConf EU 2012 • http://www.youtube.com/watch?v=3UTIcQYQ8Rw • ECMAScript 6 • http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/ECMAScript-6 • Getting started: TypeScript for Windows 8 Projects using Visual Studio 2012 • http://blogs.msdn.com/b/yizhe/archive/2012/11/22/getting-started-typescript-for-windows-8-projects-using-visual- studio-2012.aspx • http://blog.tattoocoder.com/2012/10/typescript-for-windows-8-store-apps.html

Editor's Notes

  1. 툴 사용해보기다른 라이브러리와의 연계 보기Demo익히기Specification 읽어보기ECMAScript 6 살펴보기Demo익히기Specification 읽어보기ECMAScript 6 살펴보기다른 라이브러리와의 연계 보기툴 사용해보기