2017-01-01から1年間の記事一覧
Amazon Echo Dot (2nd Gen.)を買いました。日本では招待制購入みたいですが、米国では有り余っているのか値引きして$30になった上、オーダーしたらFree-2day指定のはずが翌日届きました。当然英語版ですが、いきなり日本語化します。 箱から出してmini-USB電…
in keyof T - まさたか日記 keyof Tを用いて連想配列でアクセスする際の縛りを前に書きましたが、もっとスマートな書き方を思いついたのでメモ。 test ('power of keyof', () => { function checkObject<T>(props: T): { [N in keyof T]?: string } { return Ob</t>…
日本での週末、まだ時差ボケですごく早朝に起きてしまう。 WEB見ててもSierraの時のようには悲鳴があがってない気がしたので、特に検証もすることなくHigh Sierraにアップグレードしました。噂のAPFSなる新ファイルシステムに何のためらいもなく変更されてい…
Angularが教えてくれた。 TypeScriptの学びの中で、他のライブラリの型情報をどう手に入れるかは説明されているのだけど、ライブラリとしてどのように型情報を提供するのかはあまり説明されていない。ECMAScriptで書かれたライブラリに後付けでindex.d.tsだ…
昨日から日本に来てます。 facebook.github.io さて、炎上の末にライセンスがMITになったReactのv16がリリースされたと同時期に、Enzymeもv3がリリース。v3からsetupに変化がありました。 Working with React 16.x · Enzyme 説明とおりにしたけど動かねー。C…
TypeScriptの勉強が嵩じて、一個、Reactのフォーム画面を作るときのめんどくさいところをまとめた小さなライブラリを作りました。 github.com 何がめんどくさいと思っていたかというと、 フォームの一時的状態をどこに持つか悩む。Reduxストアに持つのは大げ…
TypeScript 2.1 · TypeScript このTypeScript2.1で追加されたという keyof演算子をうまくつかうと、オブジェクトのプロパティを縛るのに有用でした。 test ('power of keyof', () => { // 返値のin keyofという受け方が今回の話題。今回Nは捨て型だけど、使…
Functions · TypeScript 上記URLの最後、関数オーバーロード(記事のOverloads項目)なる言語仕様について。まずは以下のようなのがあったとします。 // .tsxファイル まずはこんなのがあったとします。 import * as React from 'react'; type P = { message…
これまでReactコンポーネントを書く時、コンポーネントの使われ方を縛るためにprop-typesを用いて動的なチェックをしていました。TypeScriptでは代わって静的な型チェックを利用してprop-typesを使わずとも利用方法を縛るということになってます。しかし、け…
import * as ReduxActions from 'redux-actions'; import * as Redux from 'redux'; // 型の競合エラーがでる interface ExAction extends Redux.Action, ReduxActions.Action<string> {} 現実感の無い実験のためのこのコードは、今日時点では残念ながらコンパイラを</string>…
medium.com 素晴らしい記事。これらの「The hidden power」を知らず、expect(rec.prop).toBe(val)の組み合わせをプロパティの数だけ並べてましたよ。 function fn() { return { a: 1, b: true, c: 'hello', d: { d1: 2, d2: false }, e: 3, f: 4 }; } // 今…
いつからか、TypeScriptトランスパイルに極端に時間がかかるようになってました。ビルドも、DevServer実行も、テストもすべてトランスパイルが走るのでこれが遅いと開発の勝手全てに影響します。特にtslintが遅くなった結果、エディタで警告やエラー箇所を修…
まだTypeScriptが手に馴染むには書いた量が少なく、日々失敗が多い。 type Book = { title: string, vols: [string] }; type BooksPayload = { books: [Book] }; // 正解は、= { books: Book[ ] }; こんなコードを書いていた。意図としてはBookの配列をActio…
redux-actionsを用いてActionCreatorとReducerを書いていますが、TypeScriptに移行して書き方がちょっと変わりました。 これまではActionCreatorをまとめて作るcreateActionsと、Reducerをまとめて作るhandleReducersを便利に用いてました。しかしTypeScript…
できるだけ厳しめ環境で書いた方がよろしかろうと、TypeScriptのトランスパイラオプションを最もstrictにしましたが、私の現時点でtsconfig.jsonで、strict: trueとするのは時期尚早でした。 tsconfig.jsonで、strict: trueとする webpack.config.*.tsで、'p…
https://github.com/reactjs/redux/tree/master/test/typescript Reduxのリポジトリの中、test/typescriptにReduxでの有用なTypeScriptサンプルがあります。強い型付けでのMiddlewareの書き方とか参考になるもの多い。また、これらのテストは動かさずにコー…
www.infoq.com 上記記事をたまたま読んで目にした呪文。noImplicitAny。 Over time, they reached the point of enabling advanced compiler options, such as –noImplicitAny to prevent the compiler from inferring an any type. advancedってすごいな。…
TypeScriptの8つめ。 Productionをやります。 // webpack.config.production.ts import * as path from 'path'; import * as webpack from 'webpack'; export default { entry: './ts/index.tsx', output: { path: path.resolve('static/js'), filename: 'bu…
TypeScriptの7つめ。 愛用のWebStormでTypeScriptを研究しつつ、おまけでAtomをインスコしてサンプルを作るときの清書プラットフォームとして使って見ました。 Homebrew-Cask 私はHomebrewでNodeもYarnも入れてますので、Atomも。MacOS向けGUIインストーラー…
TypeScriptの6つめ。 HMRには3段階あって、非Reactアプリ、Reactアプリと続いて最後にReact+Reduxアプリに到達します。 // /store/Store.ts import { createStore, combineReducers, applyMiddleware } from 'redux'; import { routerReducer as router, rou…
TypeScriptの5つめ。まだまだ続きます。 $ yarn add react-hot-loader@next $ yarn add @types/webpack-env -D react-hot-loaderは3.0.0-beta.7が入りました。そして@types/webpack-envを!これが自分的には一番ヤバい。見つけるのに苦労した。 // webpack.c…
TypeScriptの4つめ。 Lintができたらテストもちゃんとやっとく。最近覚えたJestそしてEnzymeでやります。 $ yarn add jest enzyme react-test-renderer ts-jest @types/jest -D jestとenzymeを加える他に、@types/jestが必須です。必須ではないですが@types/…
TypeScriptの3つめ。 やはり大人の嗜みとしてLintを設定したいと思います。ES6ではEslintでAirbnbをやってました。TypeScriptでもAirbnbを張り付けときます。 $ yarn add tslint tslint-config-airbnb tslint-react tslint-loader -D 名前もそのまま、Tslint…
TypeScriptの2つめ。前記事の続き。 Webpack DevServerを動かしてTypeScriptで書いたReactアプリを動かしましたが、このWebpackの設定をTypeScriptで書くことも可能。Babel使ってES6で書くこともできましたので驚くことではない。 $ yarn add ts-node -D yar…
TypeScriptのReactアプリを作るに際し、一番シンプルなのはWebpack DevServerで実行だけするというものかなと思います。NodeとYarnはすでに入ってること前提で、あとはテキストエディタ&WEBブラウザだけでOK。 $ mkdir TsReact $ cd TsReact $ yarn init $ …
Labor Dayの連休を利用して、TypeScriptでReact開発環境を作ることをやってみました。 (TypeScriptで書いたReactアプリを、以下同じ) Webpack DevServerで実行する 構文および書き癖チェックする Jest+Enzymeでテストする Webpack DevServerでHMR実行する We…
Flowの0.54.0が出てたのでアップグレードしたら、挙動が変わった。 # .flowconfig [ignore] .*/sass/* .*/static/* .*/bin/* .*/pkg/* .*/src/* .*/vendor/* [include] [libs] [lints] [options] suppress_comment= \\(.\\|\n\\)*\\flow-suppress esproposal…
Facebook OSSの話題に触れてるうちに、yarnにしてみっかなと。yarnのライセンスはFacebook OSSの特徴となったBSD-3-ClauseではなくBSD-2-Clauseですけど、そこはかとなくFacebookな匂いの子です。今までニーズがなかったから入れ替えてなかったけど、むしろ…
Immutable.jsの型定義の取り込みできた。今後は応用して他のライブラリも手動で取り込みできよう。 # .flowconfig [ignore] # .*/node_modules/* こいつが邪魔してた .*/node_modules/eslint-plugin-jsx-a11y/* .*/node_modules/react-event-listener/* .*/s…
Flowはいまのところマジ大変。どうやら一番成長の速い時期にぶつかってしまったらしく、わからないことを調べても皆がバラバラなことを言ってたりして困る。サンプルで数行のお試しコードを書いてる分にはハマりどころも少ないんだけど、ちゃんと出来上がっ…