ウェブサイト検索

TypeScriptでエクスポートされた関数の型を強制する方法は?


私はこれを持っていました:

export const counterReducer: ActionReducer<number> = (state = 0, action: Action) => {
  const at = CounterActions;
  switch (action.type) {
    case at.incrementId:
      return state + 1;

    case at.decrementId:
      return state - 1;

    case at.resetId:
      return 0;

    default:
      return state;
  }
};

残念ながら、export function 形式に書き直さなければなりませんでした(これがないと AoT は動作しません):

export function counterReducer(state = 0, action: Action): number {
  const at = CounterActions;
  switch (action.type) {
    case at.incrementId:
      return state + 1;

    case at.decrementId:
      return state - 1;

    case at.resetId:
      return 0;

    default:
      return state;
  }
}

ご覧の通り、私は関数全体の型(ActionReducer<number>)を失っており、これは私にとって受け入れられません。

質問は次の通りです:
export function の構文はどのように型付けできますか?定義の時点でどのように型を付けられますか?

回答 #1

このように型付き関数をエクスポートできます:

export const counterReducer = (state = 0, action: Action) => ({
  ..
} as ActionReducer<number>);