ReactとReduxを使用していて、インターフェイスとして指定されたアクションタイプを使用しているため、型削減のためにタグ付きの共用体を利用できます。TypeScriptの矢印関数で戻り値の型を指定する
だから、私はこのように見えるの型宣言を持っている:
interface AddTodoAction {
type: "ADD_TODO",
text: string
};
interface DeleteTodoAction {
type: "DELETE_TODO",
id: number
}
type TodoAction = AddTodoAction | DeleteTodoAction
私はこれらのアクションを作成するヘルパー関数を作成したいのですが、私はこのために、矢印の機能を使用する傾向があります。私はこれを書いている場合:
export const addTodo1 = (text: string) => ({
type: "ADD_TODO",
text
});
コンパイラは、戻り値の型が明示的に指定されていないので、これは有効なAddTodoAction
であることを確認することで任意のヘルプを提供することはできません。
export const addTodo2: (text: string) => AddTodoAction = (text: string) => ({
type: "ADD_TODO",
text
})
しかし、これは、関数の引数を2回指定する必要があるため、冗長で読みにくくなります。
矢印表記を使用するときに、戻り値の型を明示的に指定する方法はありますか?私はこれをしようと思っている
:この場合
export const addTodo3 = (text: string) => <AddTodoAction>({
type: "ADD_TODO",
text
})
、コンパイラはAddTodoAction
として戻り値の型を推論するが、私が戻っていたオブジェクトが適切なのすべてを持っていることを検証しませんですフィールド。
私は別の関数の構文に切り替えることにより、この問題を解決することができます:
export const addTodo4 = function(text: string): AddTodoAction {
return {
type: "ADD_TODO",
text
}
}
export function addTodo5(text: string): AddTodoAction {
return {
type: "ADD_TODO",
text
}
}
これらのいずれかの方法は、コンパイラが正しい戻り値の型を使用して、私が適切にすべてのフィールドを設定していることを強制するために発生しますが、彼らはありますまたもっと冗長で、 'this
'が関数で処理される方法を変更します(これは問題ではないかもしれません)。
これを行う最善の方法についてアドバイスはありますか?
'getTitle =():string => '状態リスト' ' –