type StringBool = "true"|"false"; interface AnyNumber { prev?: any, isZero: StringBool }; interface PositiveNumber { prev: any, isZero: "false" }; type IsZero<TNumber extends AnyNumber> = TNumber["isZero"]; type Next<TNumber extends AnyNumber> = { prev: TNumber, isZero: "false" }; type Prev<TNumber extends PositiveNumber> = TNumber["prev"]; type Add<T1 extends AnyNumber, T2> = { "true": T2, "false
Today our team is happy to present our latest release with TypeScript 2.2! For those who haven’t yet heard of it, TypeScript is a simple extension to JavaScript to add optional types along with all the new ECMAScript features. TypeScript builds on the ECMAScript standard and adds type-checking to make you way more productive through cleaner code and stronger tooling. Your TypeScript code then gets
このサイトについて TypeScriptのハンドブックを日本語に翻訳してまとめています。 GitHubのMicrosoft/TypeScript-Handbook の内容を参考に作成していますが、非公式で個人による作成物であるため、誤りがあると思います。その点についてはご了承ください。 もし、間違いを見つけましたら、 @tomof まで教えていただければ幸いです。 このサイトではGitHubのドキュメントを元に翻訳していますが、同じ内容のドキュメントがTypeScriptの公式サイトに公開されています。 Back to top © https://github.com/Microsoft/TypeScript-Handbook このページは、ページトップのリンク先のTypeScript-Handbook内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式の
色々あってシンプルなtypescriptの開発環境をつくろうとして消耗した話です 小規模なプロジェクトをシュって書けるシンプルな環境がほしい でもナウくなっててほしい そもそもナウいとは... 最近のフロントエンドの人は何を言ってるのか全然わからないし依存パッケージが多すぎて混乱する でもちょっとはナウくなっててほしい 試行錯誤した結果 npm scripts + browserify + tsify + watchify で構成することにきめた. 本体を1行も書かないまま日付が変わっていた. もうナウくなくていいから本体が書きたい 構成 とりあえずbuildすると色々なものがdistに送られる構成にした ├── dist (static-assets) │ ├── bundle.js │ ├── bundle.css │ └── index.html ├── src │ ├── ts │
この記事は2016年に書かれた古い記事です。当時はまだTypeScript2.0も出ていないころで今とは状況がかなり異なっています。参考にする場合注意してください。 はじめに TypeScriptの型システム Declaration space Open-ended ここまでの確認 型定義ファイルを読み書きできるようになるために declare キーワード 既存のオブジェクトの型定義を拡張する グローバルなオブジェクトに対する宣言 module Export Assignments Relative or Non-relative module imports ES2015形式 実際の定義ファイル 既存の定義ファイルを拡張する declare global { } について Typings について おわりに インターン募集中 はじめに こんにちはアプリケーションエンジニアの id:t_k
TypeScript の Promise の型 だと、型パラメータが Promise#then 側しかなくて、 Promise#catch 側の型が any になってしまって不便だ。 もし、catch 側の型についても型引数で指定できたなら、より安全なプログラミングができる。 そこで、catch 側の型を指定していない理由について考察してみた。 理想 const promise: IdealPromise<T, E> = getPromise(); promise .then((x) => { /* x は T 型 */ }); promise .catch((e) => { /* e は E 型 */ }); 実際 const promise: Promise<T> = getPromise(); promise .then((x) => { /* x は T 型 */ }); prom
TypeScript 1.5.3が出ました! 今回のアップデートはかなり多くの更新を含む、大規模なアップデートであると言えます。 ↑ここまで前回のコピペ まさか、1.4.1から半年待つことになろうとは思いませんでしたね…。 alphaからbetaが1月なのに正式リリースが2ヶ月強ですよ。 変更点は公式Blogにも書かれているが、ざっくりイカの通り。 ES6サポート es6 modules destructuring spread for...of symbols computed properties let/const tagged string templates namespaceキーワードの導入 外部モジュールのコンパイルターゲットにUMD*とSystemJS*のサポートを追加 プロジェクト設定ファイル(tsconfig.json)の導入 Decoratorsの追加 Angular
皆さんこんにちは。adingoにてFluctという広告配信システムの管理画面を中心にクライアントサイドの開発を行っております、大関です。 今回は、表題の通り、実際にプロダクトとして動いている既存のコードベースを、ES5ベースからTypeScriptに段階的に移行させた話について書こうと思います。 移行前のコードベース及び直面した課題 今年の1月頃から、アプリケーションのクライアント側の一部を、以下の構成で実際に開発しています。 言語 ECMAScript 5 主要な依存ライブラリ UI開発にReactおよびFacebook JSX syntax 統合イベントシステムとしてのRxJS テストコードのアサーションにpower-assert ビルドチェーン モジュール連結にbrowserify 環境変数に基づくビルドフラグ用途でenvify コードの解析とLintにESLint 未使用変数や未定
TypeScriptで作成したライブラリをrequireで読み込めるようにするには.d.tsをreference pathで参照する。 ただし、普通に.tsを--declarationでtscした結果では参照できないので、以下のような内容を手書きする。
JSX + TypeScript の悪魔合体 ギョーム的に気持ちになったので JSX + TypeScript をはじめました。 導入にあたってチーム内への説明を兼ねたブログ。AltJSに対して ES でいいじゃん派ですが、自分の型需要に対して 現状の Flowtype が辛みしかないのでやむをえず。 動機 紆余曲折あって結局 React を使うことにした React Component には JSX with Babel を使いたい(手書きは無理だ) UI 以外のロジックを持ったモジュールは型の恩恵に預かりたい Flowtype つらい TypeScript かー UI 周りは JSX で、その他の堅いロジックは TypeScript で書けばいいのでは? 共存だ!! メリットがあるのかも不明瞭ですが、分からないからこそ試してみようという感じです。JSX と TypeScript の境界
はじめに 最近, TypeScript 1.5関連のエントリが少しずつ上がってきてるけど, このエントリはその中で最も誰得?となること間違いなし! 最初に断っておくが、このエントリを読んで得するのは、これから何かしらのエディタ(EclipseとかEmacsとか秀丸とか自分の信じている神に従え)でTypeScript向けのPluginを作ろうと思っている人限定である。 「他人の作ったpluginなんて使う気にすらならないぜ!自分で実装するぜ!」って奴は, こんなもん読まなくても自分で何とかしそうな気がプンプンする. さて, 先日 別のエントリにて記載したが, TypeScript v1.5.0 alpha版公開に合わせて, TSServerを利用したVim plugin tsuquyomiを作成&公開した. このエントリでは, tsuquyomiを作成する上で身についたTSServerの基礎
Today we’re announcing TypeScript 1.5 Alpha, the first preview of the TypeScript 1.5 release. This release shows off many of the features that will be in the final TypeScript 1.5 release. In the alpha release, you’ll be able to use three new capabilities of the TypeScript tools: a richer ES6 experience, decorators, and a new Sublime Text plugin. You can try this alpha out today by installing the
18. // Type definitions for Angular JS 1.3+ // Project: http://angularjs.org // Definitions by: Diego Vilar <http://github.com/diegovilar> // Definitions: https://github.com/borisyankov/DefinitelyTyped /// <reference path="../jquery/jquery.d.ts" /> declare var angular: angular.IAngularStatic; // Support for painless dependency injection interface Function { $inject?: string[]; } // Collapse angula
ES6 compat tableのTypeScriptコードのビルド時間を300秒から2秒に短縮した話と、最近のCompiler APIの動きの紹介。 先日TypeScriptの文字列を簡単にコンパイルするtypescript-simpleというライブラリを書いた。 typescript-simpleを作った動機の1つは、ES6 compat tableのTypeScript用テストを高速化することだった。 元は300件以上あるテスト項目を、テストごとにNode.js v0.11のchild_process.execSyncでプロセスを立ち上げてTypeScriptコンパイラ (tsc) でチェックしていたので、全部テストするのに300秒ぐらいかかっていた。これをtypescript-simpleで全テストをワンプロセス内で実行したら超速化するはず!と思ったけど、300秒が200秒になるぐ
TypeScriptで複数ファイル構成のプロジェクトを扱う方法について書いてみる。日本語の入門記事や試してみました系の記事で勘違いされてることがたまに見受けられるので、整理してみる。 公式のModules in TypeScriptを既に読んでおられるような御仁は回れ右していただいても結構です。 やりたいこと ソースファイルをモジュールごとに分割して管理したい 実行環境はNode.js or ブラウザ 例えば、こういう処理があって、 // main.ts function trimLeft(str: string): string { return str.replace(/^\s+/, ''); } var input = document.getElementsByTagName('input')[0]; input.value = trimLeft(input.value); tri
FRP(Functional reactive programming) supporting DSL Lazy stream, monad, pattern match, guard implements in JavaScript Lazy Now Data-Oriented Design by Pipeline mainstream [input] | substream(async) | ----> | | : procstream | | ----> | | | | | | <---- | | | | | ajax(async) | | ----> | | | : | | <---- | | | | | worker(async) | | ----> | | | : | | <---- | | | | | process | | ----> | | | | | | <---- |
2017/03/19 現在、dtsmは@typesの登場により、(結構前から)tsdと同じくdeprecatedになっています どうも、わかめです。 冬コミ 3日目 西く02aよろしくね! 1月で1人で104Pほど書いて死ぬかと思いました。 しかも仕事がクソ忙しいんですよ!!なんでじゃ!!! 本自体について冬コミに前後して全文を公開する予定ですが、表紙データは配布しないこと、紙版が売れなくて赤字が出ると夏コミなどのやる気に大幅に影響することを鑑みてみなさん買ってくださると嬉しいです!オナシャス! さて、TypeScriptアドベントカレンダー18日目ということでご紹介するのはdtsm(.d.ts manager)です。 TypeScriptには型定義ファイルという、既存のJavaScript資産をTypeScriptで利用するための型のヒントファイルがあります。 その型定義ファイルはDef
TypeScript Advent Calendarの4日目。 TypeScriptのロードマップを見てもES6対応以外は "Investigate top-rated feature requests" とか書いてあるぐらいで、GitHub Issuesのコメントのやりとりを見ていても割りと流動的に良い提案があったら取り入れる感じで開発を進めている印象。 ということで、GitHub Issuesからおもしろそうなものをいくつか拾って紹介してみる。 個人的な希望として、TypeScriptにはES6 + 型付けというコンセプトを突き進めて欲しいと思っていて(詳細はこの辺のスライドを参照)、言語機能追加系よりも型関連の強化に期待しているので、そっちがメインで。 TypeScript 1.4のおさらい とはいえ1.4で型関連の重要な機能追加がいくつか入ったのでまずはおさらい(MSDN Blog
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く