0
型定義に、パラメータ型によって異なる戻り型がある多型メソッドを指定する適切な方法はありますか?多型関数のフロータイプライブラリ定義を宣言する方法
index.js:
// @flow
import {func1} from './lib1';
const s: string = func1('string');
const b: boolean = func1(); // should cause type error but does not!
lib1.js:
export function func1(p) {
return (typeof p === 'string') ? p : 0;
}
DEFS/lib1.js.flow
// @flow
declare module "lib1" {
declare export function func1(p: string): string;
declare export function func1(_: void): number;
}
.flowconfig:
[libs]
defs/
index.js(4)にエラーメッセージが表示されることを期待していましたが、フローはエラーにはなりません!
ありがとうございましたNat!残念ながら、期待どおりに動作しません。私は完全な例で質問を修正しており、indfex.js(4)でエラーが発生すると予想していましたが、フローは不平を言っていません。 – doberkofler
ライブラリ定義と実装ファイルを統合しています。実装ファイルを調べる '。/ lib1'からインポートしています。 'lib1.js'の上部に' @flow'がないので、あなたはその関数の使用について型チェックを受けていないようです。 'lib1'からインポートした場合、フローはライブラリ定義ファイルを見ます(しかし、実行時には見付かりません)。 –
私はおそらく私の例で間違いを犯しましたが、今は混乱しています。 lib1.jsはタイプの指定されていない外部ライブラリの例であり、defs/lib1.js.flowはlib1.jsにない型情報を追加するライブラリ定義ファイルです。ライブラリへのアクセス権がないため、ライブラリ定義ファイルを正確に追加する必要があることは私の理解です。 – doberkofler