2015-10-08 3 views
6

フロードックを使った広範なグーグルと読書と例では、JavaScriptを使用した非常に一般的なパターンの例は示されていませんでした。標準的な例は、バックボーンである:JSDocのでフロータイプ - バックボーンモデルなどのクラスファクトリの宣言を書き込む方法は?

var User = Backbone.Model.extend({ 
    getFullName: function() { 
    return this.get('firstName') + ' ' + this.get('lastName'); 
    } 
}); 


var exampleUser = new User(); 
exampleUser.set('firstName', 'Johny'); //set() is a method from Backbone.Model 
exampleUser.set('lastName', 'Something'); 
exampleUser.getFullName(); //method coming from User class 

次のように、私はいくつかのIDEはまともな自動補完を把握することができることで、クラスに注釈を付けることができます:

/** 
* @class User 
* @augments Backbone.Model 
*/ 
var User = Backbone.Model.extend(/**@lends User.prototype */{ 
    getFullName: function() {...} 
}); 

をどのように適切にどのような方法がありますFlowでこのパターンに注釈を付ける?

答えて

8
/* @flow */ 

class Model { 
    get(name: string): any {} 
    set(name: string, value: any): void {} 
} 

function extend<T>(def: T): Class<Model & T> { 
    throw new Error('not implemented') 
} 

var User = extend({ 
    getFullName: function() { 
     return this.get('firstname') + this.get('lastname') 
    } 
}) 

var a = new User 

a.get('firstname') 
a.getFullName() 
// a.notExisting give error 

私は

このコード「の両方ModelTあるClassを返し、定義オブジェクト型T考える」のパターンを表現するために、交差点の種類やジェネリック型を使用するには、BREW、出荷の下でコンパイルしますフロー0.11


以下は私の個人的な考え方です。私は、フロードキュメントが不足していることに同意する必要があります。その機能を学ぶ最も良い方法はおそらくフローを読むことですReact annotation and flow's source.フローは洗練された型推論アルゴリズムに基づいており、注釈なしでプログラムをタイプチェックすることができます。フローは注釈を付けないように設計されています。しかし、型推論は、アノテーションから自由にするためにはあまり進んでいません。あなたはコードです。

+1

ちょっと小さい:流れはH-M型の推論を使用しません。これは、フロー分析(したがって、フロー)を使用します。この回答をいただきありがとうございます! –

+0

@SamGoldmanあなたの修正をありがとう!更新された答え。 –

関連する問題