タグ

2021年1月3日のブックマーク (3件)

  • ミックスイン | TypeScript Deep Dive 日本語版

    TypeScript(およびJavaScript)クラスは、厳密な単一継承をサポートします。あなたはこれをすることはできません: コピーclass User extends Tagged, Timestamped { // ERROR : no multiple inheritance } 再使用可能なコンポーネントからクラスを構築する別の方法は、mixinと呼ばれるより単純な部分クラスを組み合わせてそれらを構築することです。 アイデアはシンプルです。クラスBの機能を得るために_クラスBを継承するクラスAを_定義するのではなく、その代わりに_クラスAを取る関数B_を定義して、機能を追加した新しいクラスを返すようにするのです。関数Bはミックスインです。 [mixinは] コピー// Needed for all mixins type Constructor<T = {}> = new (.

    ミックスイン | TypeScript Deep Dive 日本語版
  • TypeScriptで既存の型を拡張する場合にthisの型を考慮したい

    typescriptで既存の型を拡張する場合 interfaceを使って例えばsum関数であれば interface Array<T>{ sum():number; } Array.prototype.sum = function(){ return this.reduce((i,j)=>i+j) }; このように書けますが、上記の場合 number|stringの配列 [1,2,3,"4"].sum() //64 と書いてもコンパイルエラーになりません(当たり前ですが) Array< number >にのみsumを追加させ 他の型ではコンパイルエラーにさせたいのですが可能でしょうか。 後 var a = [1,2,3,"4"].sum() で a が コンパイル前はnumber型ですが実行時の型がstringと 間違った型になってしまいます。

    TypeScriptで既存の型を拡張する場合にthisの型を考慮したい
  • Mixins | TypeScript 日本語ハンドブック | js STUDIO

    イントロダクション Mixinのサンプル サンプルの解説 イントロダクション 伝統的なOO(オブジェクト指向)階層と並び、 再利用可能なコンポーネントからクラスを構築するもう一つの方法に、より単純な部分クラスを組み合わせる方法が挙げられます。 これはScalaのような言語のMixinや特性の考え方に通じるものがあり、 JavaScriptコミュニティでもこのパターンが人気を博しています。 Mixinのサンプル 以下のコードでは、TypeScriptでmixinをモデル化する方法を示しています。 コードの後に、どのように動作するのかを分析してみましょう。 // 使い捨て(Disposable)Mixin class Disposable { isDisposed: boolean; dispose() { this.isDisposed = true; } } // 活性化可能な(Activ