SlideShare a Scribd company logo
TypeScriptの中のこと(浅
め)
自己紹介
• @k_maru
• 主にMS系エンジニア
• grunt-typescript作者
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
typescript.js
grunt-typescript
各種クラス
> tsc
tsc.js
各種クラス
BatchCompiler
BatchCompiler ”モドキ”
Grunt Task
> grunt
grunt-typescript の場合tsc の場合
tsc.js
typescript.js
typescriptService.js
parserとかscannerとかASTとかコンパ
イルするための基本的なものがすべて
入ってる。
コンパイラーの基本セット
typescript.jsの内容に加えて、ファ
イル出力を担当するioとかコマンドライ
ン引数をパースするやつとか、
BatchCompilerとかが入ってる。
tscコマンドライン用
typescript.jsの内容に加えて、外部
から利用する用のインターフェイスとか
コードフォーマットとか括弧のマッチン
グとかが入ってる。
主にエディタサポート用
typescriptService.jsの手に入れ方
• 自分でソースからコンパイルしましょう。
> git clone https://git01.codeplex.com/typescript TypeScript
> cd TypeScript
> npm install
> node_modules/.bin/jake local
> cd built/local
> ls
jquery.d.ts tsc.d.ts typescript.d.ts typescriptServices.d.ts winjs.d.ts
lib.d.ts tsc.js typescript.js typescriptServices.js winrt.d.ts
• もしくはLKG(Last Known Good)を使いましょう。d.tsはないけど…
> git clone https://git01.codeplex.com/typescript TypeScript
> cd TypeScript/bin
> ls
jquery.d.ts lib.d.ts resources tsc tsc.js typescript.js typescriptServices.js winjs.d.ts
winrt.d.ts
BatchCompilerがやっている動きをざっく
り追いながら中のお話を浅ーくしていきま
す。
参照関係の解決
コマンドライン引数の
パース
コンパイル
参照関係の解決
コマンドライン引数の
パース
コンパイル
nodeで実行
-w / --watchオプションがある
wshで実行
--codepage オプションがある
コマンドラインで指定可能なオプション
• OptionParserでパースしてCompilationSettingsを作成
-documented out outDir sourcemap mapRoot sourceRoot declaration
removeComments
target module help version noImplicitAny
-documented(node only) watch
-documented(wsh only) codepage
-undocumented diagnostics locale noResolve noLib logFile
propagateEnumConstants
useCaseSensitiveFileResoltionコンパイル詳細情報を表示してくれる
メッセージのロケールを設定する
コンパイル結果をファイルに出力してくれる
内部的なオプションの設定
export class CompilationSettings {
public propagateEnumConstants: boolean = false;
public removeComments: boolean = false;
public watch: boolean = false;
public noResolve: boolean = false;
public allowAutomaticSemicolonInsertion: boolean = true;
public noImplicitAny: boolean = false;
public noLib: boolean = false;
public codeGenTarget: LanguageVersion = LanguageVersion.EcmaScript3;
public moduleGenTarget: ModuleGenTarget =
ModuleGenTarget.Unspecified;
public outFileOption: string = "";
public outDirOption: string = "";
public mapSourceFiles: boolean = false;
public mapRoot: string = "";
public sourceRoot: string = "";
public generateDeclarationFiles: boolean = false;
public useCaseSensitiveFileResolution: boolean = false;
public gatherDiagnostics: boolean = false;
public codepage: number = null
public createFileLog: boolean = false;
}
settings.ts
勝手にセミコロンを設定してくれる
参照関係の解決
コマンドライン引数の
パース
コンパイル
///<reference path="hello.ts" />
import log = require("./log");
var result = hello("TypeScript");
log.message(result);
index.ts
hello.tsを対象に追加
参照を確認してコンパイル対象に自動で設定する
log.tsを対象に追加
> ls
index.ts hello.ts log.ts
> tsc index.ts --module commonjs
参照の確認の流れ
tokenを作る
importキーワードを探す
いろいろ条件指定して一致したら追加
referenceコメントを探す
いろいろ条件指定して一致したら追加
--noResolveオプション
--module指定が必要な構成だとエラーになる。
ただし、上記ではなくかつオプションに全ファ
イルを指定できるのならコンパイルは速くなる。
副作用の詳細は不明
参照関係の解決
コマンドライン引数の
パース
コンパイル
コンパイルの流れ
TypeScriptCompilerオブジェクトの作成
コンパイル対象のファイルを全部コンパイ
ラーオブジェクトに追加
コンパイルの実行
シンタックスの確認
セマンティックの確認
オプションの整合性の確認
JavaScriptの生成(Emit)
型定義の生成(EmitDeclaration)
ファイルの出力
ポイントその1
ASTは要求された時に初めて生成される。
つまりコンパイル内のステップを飛ばし
ても問題ない。
ポイントその2
セマンティックに問題があってもEmit
は実行される。
→エラーが出てるのにファイルが作成さ
れるって現象はこれが理由
おまけ
Undocumented TripleSlashComment
///<implicit-import />
///<amd-dependency path=“” />
///<reference no-default-
lib="true"/>
--module amd でコンパイルした時に
pathで指定した値が生成される
JavaScriptのdefineに組み込まれる。
domreadyとかによさげ
外部モジュールとして取り扱われる。
使いどころ不明
参照関係の解決時にこれが指定された
ファイルが見つかるとlib.d.tsが読み
込まれなくなる。
ご利用は計画的に
ご清聴ありがとうございました。

More Related Content

PPTX
TypeScriptはいいぞ
PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
PDF
TypeScript超入門
PDF
3日時間をもらったのでTypeScriptを触ってみた
PPTX
TypeScriptをオススメする理由
PDF
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
PDF
TypeScriptは明日から使うべき
PDF
jQuery 対応ライブラリと TypeScript
TypeScriptはいいぞ
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
TypeScript超入門
3日時間をもらったのでTypeScriptを触ってみた
TypeScriptをオススメする理由
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScriptは明日から使うべき
jQuery 対応ライブラリと TypeScript

What's hot (19)

PDF
Visual Studioで始めるTypeScript開発入門
PDF
TypeScript 入門してみる
PDF
TypeScript 独習会
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PDF
TypeScript による今風の web アプリ開発
PDF
IDEALIZE YOU
PDF
JavaScript MVC入門
PDF
WebStormでできること
PDF
Real World PHP in pixiv
PDF
continuatioN Linking
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PPTX
C#/.NETがやっていること 第二版
PDF
これからの「async/await」の話をしよう
PDF
async/awaitダークサイド is 何
PDF
いまさら恥ずかしくてAsyncをawaitした
PDF
Phpstormちょっといい話
PDF
Jvm言語とJava、切っても切れないその関係
PDF
Flowtype Introduction
PDF
Type scriptのいいところ
Visual Studioで始めるTypeScript開発入門
TypeScript 入門してみる
TypeScript 独習会
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
TypeScript による今風の web アプリ開発
IDEALIZE YOU
JavaScript MVC入門
WebStormでできること
Real World PHP in pixiv
continuatioN Linking
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
C#/.NETがやっていること 第二版
これからの「async/await」の話をしよう
async/awaitダークサイド is 何
いまさら恥ずかしくてAsyncをawaitした
Phpstormちょっといい話
Jvm言語とJava、切っても切れないその関係
Flowtype Introduction
Type scriptのいいところ
Ad

Viewers also liked (20)

PDF
TypeScript And ALM
PDF
TypeScript 1.0 オーバービュー
PPTX
「それでも人生にイエスと言う」を読んで
PPTX
HTML5がもたらすアプリ開発へのインパクト
PDF
AngularJS 2.0 Jumpstart
PPTX
「それでも人生にイエスと言う」を読んで
PPTX
はじめにことばありき
PDF
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
PPTX
秒速一億円
PDF
CLR/H#74 LT IT勉強会発表用イチオシツール
PDF
Introduction of "MarkdownPresenter"
PPTX
Reactive Programming
PDF
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
PPT
20130921レジュメ2
PPTX
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
PDF
20140823 LL diver Angular.js で構築した note に関して
PDF
最近、リアルタイムWebが面白い
PDF
[予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦!
PDF
Gulp ことはじめ
PPTX
HTML5時代のフロントエンド開発入門
TypeScript And ALM
TypeScript 1.0 オーバービュー
「それでも人生にイエスと言う」を読んで
HTML5がもたらすアプリ開発へのインパクト
AngularJS 2.0 Jumpstart
「それでも人生にイエスと言う」を読んで
はじめにことばありき
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
秒速一億円
CLR/H#74 LT IT勉強会発表用イチオシツール
Introduction of "MarkdownPresenter"
Reactive Programming
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
20130921レジュメ2
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
20140823 LL diver Angular.js で構築した note に関して
最近、リアルタイムWebが面白い
[予告篇] みんなで同時プレイするクイズWebアプリでCodeQuizに挑戦!
Gulp ことはじめ
HTML5時代のフロントエンド開発入門
Ad

Similar to Typescriptの中のこと(浅め) (20)

PDF
TypeScript 言語処理系ことはじめ
PDF
TypeScriptへの入口
PDF
TypeScript と Visual Studio Code
PPTX
TypeScriptハンズオン第1回テキスト
PDF
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
PDF
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
PDF
TypeScript0.9
PDF
Nodejuku01 ohtsu
PDF
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
PDF
JSX - 公開から1年を迎えて
PDF
TypeScript Hands-on
PDF
JSer Class #3
PPTX
TypeScriptハンズオン第2回テキスト
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
PDF
プログラミング勉強会0721
PDF
TypeScript 勉強会
PDF
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
PDF
jsCafe v13 Grunt
TypeScript 言語処理系ことはじめ
TypeScriptへの入口
TypeScript と Visual Studio Code
TypeScriptハンズオン第1回テキスト
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
ng-japan 2015 TypeScript+AngularJS 1.3
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
TypeScript0.9
Nodejuku01 ohtsu
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
JSX - 公開から1年を迎えて
TypeScript Hands-on
JSer Class #3
TypeScriptハンズオン第2回テキスト
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
プログラミング勉強会0721
TypeScript 勉強会
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
jsCafe v13 Grunt

More from Kazuhide Maruyama (11)

PDF
ビルドで情報を埋め込んでみた
PPTX
Way Of Multi Platform Desktop App Development By DotNet
PPTX
夏時間対応始めました。 - .NET Conf関西 2018 LT
PPTX
Microsoft bot frameworkを触ってみた
PDF
Room Metro 2014-03-01
PPTX
PDF
What is xaml
PPTX
VSハッカソン TypeScript ハンズオン
PPTX
ショートカットの勧め
PDF
Grid application テンプレートを紐解く
PDF
Developerのdeveloperによるdeveloperのためのmetro designの話
ビルドで情報を埋め込んでみた
Way Of Multi Platform Desktop App Development By DotNet
夏時間対応始めました。 - .NET Conf関西 2018 LT
Microsoft bot frameworkを触ってみた
Room Metro 2014-03-01
What is xaml
VSハッカソン TypeScript ハンズオン
ショートカットの勧め
Grid application テンプレートを紐解く
Developerのdeveloperによるdeveloperのためのmetro designの話

Typescriptの中のこと(浅め)