Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BBL TypeScript

BBL TypeScript

Emmanuel DEMEY

March 11, 2016
Tweet

More Decks by Emmanuel DEMEY

Other Decks in Programming

Transcript

  1. Introduction • Langage créé par Anders Hejlsberg en 2012 •

    Projet open-source maintenu par Microsoft (Version actuelle 1.8) • Phase de compilation nécessaire pour générer du JavaScript • Tout programme JavaScript est un programme TypeScript • Support d'ES3 / ES5 / ES2015 • Alternatives : CoffeeScript, Dart ou Flow • Certaines fonctionnalités n'ont aucun impact sur le JavaScript généré
  2. --declaration --module --project --target --watch -- charset --diagnostics --emitBOM --

    emitDecoratorMetadata --experimentalDecorators -- inlineSourceMap --inlineSources --isolatedModules --jsx --reactNamespace --locale --mapRoot -- moduleResolution --newLine --noEmit --noEmitError --noEmitHelpers --noImplicityAny --noLib -- noResolve --outDir --outFile --preserveConsEnums -- removeComments --rootDir --sourceMap -- sourceRoot --stripInternal --allowJs
  3. { "compilerOptions": { "module": "commonjs", "target": "es3", "noImplicitAny": false, "outDir":

    "built", "rootDir": ".", "sourceMap": false }, "exclude": [ "node_modules" ] }
  4. var gulp = require('gulp'), typescript = require('gulp-typescript'), uglify = require('gulp-uglify'),

    tsProject = ts.createProject(’tsconfig.json'); gulp.task('typescript', function() { gulp.src('src/**/*.ts') .pipe(typescript(tsProject)) .pipe(uglify()) .pipe(gulp.dest('dist/')); });
  5. Fonctionnalités • Toutes les fonctionnalités ES2015 • Types • Inférence

    de Types • Interfaces • scopes private / protected / public • Décorateurs • Génériques • Fichier de Définitions • Enum • Méthodes statiques • Type Union
  6. import {Animal} from ‘./animal’ class Cat extends Animal{ constructor(nom =

    ‘kitten’) { super(nom); } parle() { console.log(this.nom + ' fait miaou.'); } }
  7. import {AnimalI} from ‘./animal’ class Cat implements AnimalI{ private toys:List<Toy>;

    constructor(public nom:string = ‘kitten’) { } @log parle():void { console.log(this.nom + ' fait miaou.'); } }
  8. Fichier de Définition AngularJS interface IHttpService { get<T>(url: string, config?:

    IRequestShortcutConfig): IHttpPromise<T>; delete<T>(url: string, config?: IRequestShortcutConfig): IHttpPromise<T>; head<T>(url: string, config?: IRequestShortcutConfig): IHttpPromise<T>; jsonp<T>(url: string, config?: IRequestShortcutConfig): IHttpPromise<T>; post<T>(url: string, data: any, config?: IRequestShortcutConfig): IHttpPromise<T>; put<T>(url: string, data: any, config?: IRequestShortcutConfig): IHttpPromise<T>; patch<T>(url: string, data: any, config?: IRequestShortcutConfig): IHttpPromise<T>; }
  9. Utiliser TypeScript avec AngularJS angular.module(‘mod’).service(‘UserService’, UserService); class UserService { constructor(private

    $http:ng.IHttpService) {} getUsers():ng.IHttpPromise<User>{ return this.$http.get(‘/api/users’); } }
  10. TypeScript > 1.7 • async / await • le type

    this • ES2016 Exponentiation operator • Support des décorateurs en ES3 • Amélioration des type guards • --allowJs • String literal types