web-dev-qa-db-ja.com

Flowでのアスタリスク(*)型の使用とは何ですか?TypeScriptでのそれと同等のものは何ですか?

まず、私はTypeScriptに慣れています。フローは多くの点でTSに非常に似ていますが、最近アスタリスク(*)のタイプに遭遇しました。最初は「any」の同義語だと思っていましたが、Flowのリリースノートをいくつか読んだ後、そうではないことがわかりました。私はすべての公式ドキュメントをざっと見て、「*」の使用法を見つけることができませんでした。

それで、それは何で、いつ使用するのですか?しかし、TypeScriptのそれと直接同等のものは何でしょうか。

25
NeverwinterMoon

編集:私が最初にこの回答を書いて以来、私はそのことを学びました*は、モジュールの境界にある場合は安全ではありません。私はそれを使用することをお勧めできません、そしてそれは将来削除されるかもしれません。

明示的に書き出すのではなく、型パラメーターを推測するようにFlowに指示するだけです。

function foo(): Array<*> {
  return [5];
}

// Flow issues an error:
//    2:   return [5];
//                 ^ number. This type is incompatible with
//    10: (foo(): Array<string>);
//                     ^ string
(foo(): Array<string>);

フローを試行

これはanyとは異なります-anyは安全でない型なので、* with anyこの例では、Flowはエラーを表示しません。これをnumberに置き換えると、Flowで同様のエラーが発生します。

23
Nat Mote

アスタリスク* in Flowは、タイプを推測するように指示します。これは、すでに Nat Mote によって回答されています

さらに、TypeScriptにはアスタリスクに直接相当するものがないため、型を推測するように指示することはできません。ただし、フローと同様に、一部の特定のケースではタイプを自動的に推測します。 TypeScript Type Inference DocumentationType Inference Examples

チェックアウト unique featuresこのページ: FlowとTypeScriptの違い

2

コメントを投稿するには評判が足りません。

TypeScript 2.8の更新:

https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-in​​ference-in-conditional-types

だからあなたはT<*>(フロー)TypeScriptであるT<infer U>。 TypeScriptは初めてです。間違っていた場合は修正してください。

0
FSNXW