flowタイプチェック
3238 ワード
学習の目的晦渋なバグを低減し、コードをより期待されるようにする 軽量級のjsタイプの検査で、スピーディーに使える インストール
1.設置が必要です
7のデータタイプの検出に対応しています.
オプションのタイプ
どんな状況でもタイプを詳しく書く必要があるわけではないです.
たとえば
第三者倉庫
flowconfigで増加します.
[include]検査が必要なディレクトリまたはファイルを指定します.
参考:
【1】https://zhenyong.github.io/fl...
【公式サイト】https://flow.org/en/docs/
1.設置が必要です
babel
転じてflow
文法1. yarn add --dev @babel/core @babel/cli @babel/preset-flow
2. .babelrc
{
"presets": ["@babel/preset-flow"]
}
2.据え付けflow
yarn add --dev flow-bin
3.フラッシュバックサービスを開始する
flow
// flow stop
4.初期化項目
flow init
5.タイプ検出を実行する必要があるjsファイルの先頭に追加する// @flow
// @flow
function foo(x: ?number): string {
if (x) {
return x;
}
return "default string";
}
部分文法7のデータタイプの検出に対応しています.
Boolean
、NUll
、Undefined
、Number
、String
・、Object
大文字と小文字に注意する// 1
// @flow
function check(x: number, y: string, z: boolean) {
//...
}
method(1, "test", true)
// 2
// @flow
function method(x: Number, y: String, z: Boolean) {
// ...
}
method(new Number(1), new String("test"), new Boolean(true))
以上の判例は大文字と小文字のnumberが元のタイプで、大文字のNumberはJavaScriptの構造関数で、対象のタイプです.オプションのタイプ
// @flow
function acceptsMaybeString(value: ?string) {
// ...
}
acceptsMaybeString("bar"); // Works!
acceptsMaybeString(undefined); // Works!
acceptsMaybeString(null); // Works!
acceptsMaybeString(); // Works!
オプションのオブジェクト属性{ propertyName?: string }
// ts
オプションの関数パラメータ// @flow
function func(value?: string) {
// ...
}
// @flow
function acceptsObject(value: { foo?: string }) {
// ...
}
acceptsObject({ foo: "bar" }); // Works!
acceptsObject({ foo: undefined }); // Works!
acceptsObject({ foo: null }); // Error!
acceptsObject({}); // Works!
テキストの種類function foo(value: 2) {}
foo(2); // Work!
foo(3); // Error!
foo('2'); // Error!
ハイブリッドタイプ// @flow
function stringify(value: mixed) {
// $ExpectError
return "" + value; // Error!
}
stringify("foo");
また配列の種類があります.Symbol
;インターフェースタイプ:Array
;任意のタイプ:interface
タイプコメントどんな状況でもタイプを詳しく書く必要があるわけではないです.
たとえば
/* @flow */
function add(num1, num2) {
return num1 + num2;
}
var x = add(3, '0');
console.log(x);
この場合、any
検査にも役立ちます.第三者倉庫
flowconfigで増加します.
[libs]
interfaces/
インターフェースの定義はインターフェースの下に書いてください.// flow interfaces js
// Underscore
declare class Underscore {
findWhere(list: Array, properties: {}): T;
}
declare var _: Underscore;
//
// underscore_example.js:11:10,10: unknown global name: _
flowconfigその他の配置[include]検査が必要なディレクトリまたはファイルを指定します.
[include]
../externalFile.js
../externalDir/
../otherProject/*.js
../otherProject/**/coolStuff/
[ignore]ファイルまたはフォルダを無視する.*/__tests__/.*
.*/src/\(foo\|bar\)/.*
.*\.ignore\.js
注意[ignore]は[include]の後で、同時にincludeとignoreの同一のパスがあると、ignoreになります.参考:
【1】https://zhenyong.github.io/fl...
【公式サイト】https://flow.org/en/docs/