TypeScriptで条件に基づいて型関数を定義する出力方法
P粉764836448
2023-08-14 18:18:08
<p>関数の出力タイプを定義しようとしていますが、<code> に基づいて <code>string</code> タイプと <code>number</code> タイプの間に出力タイプを置きたいと考えています。 ;toNumberIfNeeded</code> フラグ <code>toNumberIfNeeded</code> が true の場合、この関数は数値型を返し、それ以外の場合は文字列型を返すと仮定して、条件を設定します。どうすればいいですか? </p>
<pre class="brush:php;toolbar:false;">インターフェイス オプション {
大文字?: ブール値;
filterSpecialChars?: ブール値;
toNumberIfNeeded?: ブール値;
}
import const textTransformer = (テキスト: 文字列, オプション?: オプション) => {
const { uppercase, filterSpecialChars, toNumberIfNeeded} = オプション || {};
//私の処理ロジックコード
return toNumberIfNeeded ? parseInt(text) : text;
}</pre>
<p>想定される例: </p>
<pre class="brush:php;toolbar:false;">textTransformer('hello'); // 文字列型を返します
textTransformer('123', { toNumberIfNeeded: true }); // 数値型を返します</pre>
リーリーtextTransformer()
メソッドをリファクタリングして汎用パラメータを受け入れ、条件付き型を使用してtoNumberIfNeeded
がtrue
かfalse かを確認できます。
。 TypeScript では戻り値の型を自動的に絞り込むことはできないと思います。型アサーションを使用する必要があります。使用しない場合、戻り値の型はstring |number
として推論されます。