私はこのように定義されたAction
タイプがあります。それは、各メンバーが有効なアクションであるユニオンタイプだです。TypeCheck createAction Reduxのヘルパー
type Action =
{ type: 'DO_X' }
|
{ type: 'DO_Y', payload: string }
|
{ type: 'DO_Z', payload: number }
を。
ここでtype
を受け入れ、を受け入れる新しい関数を返す関数createAction
を作成したいと思います。私がしたいよう
const createAction = (type: Action['type']) =>
(payload?: any) =>
({ type, payload })
それはtype
をtypechecks:
const doZ = createAction('DO_Z')
console.log(doZ(42)) // { type: 'DO_Z', payload: 42 }
は、ここに私の現在の実装です。の型チェックもどうすればできますか?私はがtype
に基づいて正しい行動の種類に一致するようにします。たとえば、doZ
は、string
で呼び出されたときには失敗します。その理由は、はnumber
しか受け付けないと言うからです。
'<タイプ、ペイロード>(タイプ:タイプ):(ペイロード:ペイロード)=> {タイプ:ペイロード:ペイロード}'のような定義を試したことがありますか? –
@EmrysMyrooinそれは動作していないようです。タイプは値として使用されています。しかしジェネリックスは正しい方向への一歩と思われる。 TypeScriptは 'Type'と' Payload'が 'Action'から来ていることをどのように知っていますか? – daGrevis
あなたはTypescriptを利用しています...私はタグをチェックしていません。私は実際に知っていない、私は入力のためのフローを使用している! –