ES5 + Facebook JSXで書かれたJavaScriptコードベースをTypeScriptに移行させる


adingoFluct

ES5TypeScript


1




ECMAScript 5





UIReactFacebook JSX syntax

RxJS

power-assert





browserify

envify

LintESLint

使







Flux

Multilayered architecture



TypeScript

: 5600

: 70




JavaScriptCSSHTML




JSDoc













IDE






TypeScript









70



Facebook JSX

JSXReactComponentReact.createElement




C

C


(一)compile: C

(二)link: 1





(一)compile: TypeScriptJavaScript



TypeScriptJavaScriptLint



(二)link: 1JavaScriptbrowserify

1C









TypeScript2



Facebook JSX

12JavaScript




姿JavaScriptsource map使JavaScripter

soruce mapTypeScriptJSX syntaxJSX  TypeScript  Flux  ::source map

TypeScriptES6 targetsource mapTypeScriptES6 targetJavaScript


TypeScriptTypeScriptES6JavaScript

TypeScriptES6JavaScript


  TypeScript JavaScriptbrowserifysource map

source mapTypeScriptTypeScriptTypeScript

ES6 targetES6JavaScriptbabelifybrowserifybabelES6 -> ES5ES5





(一)compile: TypeScript or ESLint or ES6

(二)link: browserify + babelify1ES5JavaScript




.

Step 1. babelify


babelifybabel browserify


reactify

babelJSXReact

Reactbabel使



envify

babelutility.inlineEnvironmentVariables






babelbabelifybabel-corepackage.jsondevDependenciesbabel-core

Step 2. class syntaxES6


babelES6使TypeScriptclass syntax便arrow functionTypeScriptESclass syntax

ESLintES6調

TypeScript

Step 3. TypeScript




2015623npmTypeScripttypescript@1.5.0-betaES6 target使d.ts

githubmaster使package.json

Step 4. TypeScriptTypeScript


5000 + 7015ReactJSX50

d.ts


DefinitelyTypedd.tsES6 targethackpull requestupstream

TypeScriptTypeScriptimport


JSXJS

github:Microsoft/TypeScriptwikiModuleimportd.ts

anyTypeScriptRustC FFI bindingunsafe


TypeScript



TypeScript


step 1~45babel6TypeScript

master/trunkmerge


step 1: 1

step 2: 

step 3: 1

step 4: 4~5

使

Closure Compiler


Closure ToolsClosure CompilerJSDocTypeScriptTypeScript

Closure Tools

Flowtype


FacebookFlowtype




IDETypeScript

TypeScript


TypeScript

TypeScript

TypeScriptLint


ESLintTypeScriptTypeScriptLint babelFlowtypeFlowtypeTypeScriptbabel-eslint

ESLint使TypeScriptLintJSESLintTypeScript

tslintLint



TypeScript


 AJITO  #ajitingor@tech_voyage

adingoVOYAGE GROUPVOYAGE GROUP