View a.ts
import * as React from 'react';
// Type utilities
type DiffKey<T extends string, U extends string> = (
& {[P in T]: P } // (1)
& {[P in U]: never } // (2)
& { [x: string]: never } // (3)
)[T]; // (4)
type Omit<T, K extends keyof T> = Pick<T, DiffKey<keyof T, K>>;
View webpacker-migration.md
View webpacker-3-0.md

原文: http://weblog.rubyonrails.org/2017/8/30/webpacker-3-0/

Webpacker 3.0: 別プロセス不要になり、生成される設定ファイルは減った

RailsとWebpackをいっしょに使うのを、この3つ目のWebpackerリリースで、さらに簡単にした。2つの大きな変更は、開発中に別のプロセスがもはや不要なことと、大部分の設定は、いまやWebpacker npm package内に置かれていることだ。だから、あなたのconfig/ディレクトリはきれいなままで、アップデートもより簡単だ。

開発およびテスト中、Webpackerにオンデマンドでコンパイルさせることで、別プロセスの必要性を排除した。このプロセスを高速化するためにいろいろやった結果、多くのアプリで、パフォーマンスは良好以上になることだろう。しかし、巨大なアプリの場合、もしくは、ライブリローディングやhot module replacementが好みならば、 bin/webpack-dev-serverを使い続けることができる。Webpackerは、このプロセスが走っていることを自動的に検出して、packをオンデマンドではなくそこから供給する。賢いね。

それから、Railsのconfig/ディレクトリに生成される設定ボイラープレートの総量を劇的に減らした。標準的はものはすべて、いまではWebpack npmモジュール内に置かれている。これは、アップグレードをとても簡単にする。さらに、デフォルトを好みに応じて上書きすることも依然として可能だ。だから、これはあらゆる面での大勝利なのだ。

View tslint.json
{
"defaultSeverity": "error",
"extends": ["tslint:latest", "tslint-react", "tslint-eslint-rules"],
"rules": {
"quotemark": [true, "single", "jsx-double"],
"semicolon": [true, "never"],
"interface-name": [true, "never-prefix"],
"object-literal-sort-keys": false,
"no-submodule-imports": false,
"member-access": [true, "no-public"],
View tslint.json
{
"defaultSeverity": "error",
"extends": ["tslint:latest", "tslint-react", "tslint-eslint-rules"],
"rules": {
"quotemark": [true, "single", "jsx-double"],
"semicolon": [true, "never"]
}
}
View kondate.md

買うもの

  • だいこん
  • きゅうり
  • もやし
  • 小松菜
  • キャベツ
  • ピーマン
  • なす
  • ブロッコリー
View zaiko.md

冷凍以外

  • キウイ
  • バナナ一本
  • たまねぎ
  • キャベツ(1/4)
  • にんじん(1本)
  • しょうが
  • 納豆
  • トマト2個
View kondate.md

朝食材

  • やさいパン(半分)
  • スクランブルエッグ(+野菜)
  • パンケーキ(+野菜)
  • ハッシュドポテト
  • グリーンピース
  • 納豆ごはん
  • 冷凍焼きおにぎり
  • しゃけフレークおにぎり
View keyCaseTansform.js
function snakeCaseKeys(obj) {
const tr = obj => _.transform(obj, (result, value, key) => {
result[_.snakeCase(key)] = _.isPlainObject(value) ? tr(value) : value
});
return tr(obj);
}
function camelCaseKeys(obj) {
const tr = obj => _.transform(obj, (result, value, key) => {
result[_.camelCase(key)] = _.isPlainObject(value) ? tr(value) : value
View never.elm
-- this can be compiled
neverText : Html Never
neverText = text "never dispatch message"
-- this can not be compiled
htmlNever : Html msg -> Html Never
htmlNever elem = elem