Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

ジェネリクスとは「抽象化されたデータ型」を表現する機能です。 同じ様な関数だが、型違いの場合に、引数である型を抽象的に使う時に便利な機能です。 ジェネリクスを使わない例では、 let getStringArray = (value: string): string[] => { return [value, value, value]; }; let getNumberArray = (value: number): number[] => { return [value, value, value]; }; 冗長ですよね。 関数の受け取る引数が違うだけなのに、複数の関数を定義している例です。 だめな解決策としては、型の部分をany型にするという解決策がありますが、それではTypeScriptで静的型付けをしている意味が全くありません。 そこで登場するのが、 ジェネリクス という機能です。
JavaScriptでも静的な型が求められるようになりTypeScriptやFlowが使われるようになってきました。 しかし、それらが無かったころのJavaScriptのコードやトランスパイラを使わずに開発している人はいてると思います。 この記事はコードの変更なしでJSDocのみで型検査をする方法を紹介します。 TL;DR JSDocの型定義で型チェックをする TypeScriptのallowJsとcheckJsを使う 必要に応じてd.tsをインストールする JSDocの型定義 TypeScriptやFlowが登場するより前からJSDocは存在します。JavadocやPHPDocのJavaScript版のようなものです。 そのJSDocは型定義が書けるようになっています。 エディタによってはJSDocの型定義で型のチェックを行ってくれることもあります。 JSDocについては@use JSD
0は性別に関する情報が得られない場合に使います。性別に関する情報はあるのだけど1とも2とも言えない場合は9を使います。要は「0でもなくて1でも2でもなければ9」です。 これを知っていればMだとかFだとかを議論をせずに済みますね。 国際規格に従うべき理由 国際規格に従うことは色々と利点があります。まず、どうしてそういうコード体系にしたのかを説明しやすいです。また多言語対応する際も規格通りに書けば伝わるはずなので迷わずに済みます。別システムへのデータの移行や、異なるシステム間でのデータの統合もコード体系が同じならラクラクです。もしかしたら別のプロジェクトで書いたコードをそのまま使いまわせるかもしれません。技術者に対するトレーニングも不要です。 対して、わざわざ国際規格に反する実装をする場合は上記のメリットがそのままひっくり返ってデメリットになりはしますが、もちろん、それなりの理由があれば規格と
Ruby on Rails 5.2.0.beta2が出て久しい。 僕はRails大好きっ子なので 社内の新規事業や、社外のお手伝いしているベンチャー企業では もちろん、Rails5.2を使って開発をしている。 すでに、新しいRailsに関する記事はいくつか挙がっているが 個人的に、一番インパクトが大きかったのはActiveModel::Attributesが導入されたことである。 待望のActiveModel::Attributes ActiveModel::Attributesでなにが変わったの?というと、 いままでActiveRecordでしか使えなかった一部の機能が、ActiveModelでも使えるようになっただけである。 いや、しかし! 今までのActiveModelの最大の弱点は まさにこの ActiveModel::Attributes が無かったことだと思う。 それが、Rai
TypeScript は静的型がウリの言語なので、もうちょっとやりようはあるのではないか。 目標:型付き正規表現 これらの問題を解決するために、キャプチャーの型の情報を埋め込んだ型 TypedRegExp<captures> を作りたい。キャプチャーの型とは、具体的には string: 通常のキャプチャー string | undefined: 後ろに ? や * がついたもの、あるいは | の一方に含まれるもの undefined: 否定先読み (?! .. ) に含まれるキャプチャー のいずれかである。例えば、 /(a)(b)?/ という正規表現のキャプチャーの型は、順に string, string | undefined となる。 captures が string, string | undefined というリストの場合(最初の例)、 r: TypedRegExp<captur
この記事はLisp Advent Calendar 2016の24日目の記事です。 年末に入りとうとうクリスマスイブですが皆様いかがお過ごしでしょうか。 Common Lispは動的型付けの言語ですが、最適化のための型宣言機構が規格に組み込まれています。 また、SBCLやCMUCLでは、この型宣言を利用し、型エラーをコンパイル時に指摘する機能がついています。 型宣言と最適化の関係については、 最適化 - Common LISP users jp Cより高速なCommon Lispコードを書く Common Lispの最適化に挑戦してみる これらの記事によくまとまっています。 この記事は、実際にどのような記法で型宣言をするのかについて、学習のためにまとめたものになります。 type specifier 型は type specifier (typespec) という方式で記述されます。 ty
新生活応援期間中とのことですので,"pandas"の使い方,特に日付フォーマットについて取り上げたいと思います.「Pythonはデータ分析に強い」という評判がありますが,これは以下のような「定番」パッケージによって実現されています. "pandas" for representing and analyzing data "NumPy" for basic numeriacal computation "SciPy" for scientific computation including statistics "StatsModels" for regression and other statistical analysis "matplotlib" for visualization (以上,"Think Stats" より引用.) pandas は,Seriesオブジェクト(1次元
はじめに 某記事で、 implicitsなんて呼ばないで、各機能ごとに適切な名称で呼ぼう。あと、重要なのは型クラスだからそれだけ注意すればOK、という趣旨のことを書きましたが、どうやって使えばいいかは投げっぱなしだったのでその導入編だけでも書こうかと思います。この記事での目的は簡単で、 Scalaのコレクションのsumメソッド(とproductメソッド)を自作の有理数クラスに適用できるようにしよう ということになります。実際のところ、sumメソッドを整数リストに対して呼び出す、たとえば でも、型クラスを「使って」はいるのですが、実際に型クラスに新しいインスタンスを追加していないので、使った実感がわかないと思います。そこで、有理数クラスです。実装が比較的簡単である上に、四則演算への対応が容易という点でこれを選ぶことにしました。 まずは、有理数クラス(Rational)の実装です。ここは、本題
このドキュメントの目的 自分は趣味でFlowをずっと使っていて、またプロダクションでも今まで3プロジェクトほどにFlowを導入した。その知見。 「Flow は便利そうだけど、怖い」「いれてみたら色々ハマったからクソ」「わからん、なにもかも…」という人に対し、自分がいままで出くわしたパターンや、聞かれた疑問について、メジャーな解法を提示する。 なぜFlowを導入するか Babel から段階的に導入することが出来る React の JSX にも推論を入れることができる 部分的に適用できる ASTがES準拠であり、ESLintなどがツールが使える(TSは独自AST) それ自身ランタイムに全く影響はないので落とすのも簡単 実際にはReactと一緒に使うのが、エコシステムもユースケースも揃っていて、一番効果を発揮するだろう。それか、小さい npm モジュールを自分で書くとき。 型のメリット/デメリッ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く