web-dev-qa-db-ja.com

React Native TypeScript 'string'は、「絶対値」タイプのパラメータに割り当てられません。 USENAVIGATIONで

['string'が「String」と入力されていないというエラーが発生しているというエラーが発生していません。誰かがこのバグを解決するのを手伝ってくれることができます。

事前にありがとうございました。] 1

コードスニペット :

const loadReport = (id: string) => {
    setPostId(id);
    navigation.navigate('Report', {postId: id});
}
 _

私は 'Report'の下に下線を取得します。

7
BattleVlog

useNavigationに注釈を付けると、navigation.navigate('OtherJazzyScreen)を注意しない場合は、次のTSエラーが発生しました。

Argument of type 'string' is not assignable to parameter of type '{ key: string; params?: undefined; merge?: boolean | undefined; } | { name: never; key?: string | undefined; params: never; merge?: boolean | undefined; }'

OPは使用しているReact-Navigationのバージョンを指定していませんが、このグローバルにReactナビゲーション6では、useNavigation直接注釈を付ける必要はありませんが、まだオートコンプリートを入手する必要はありません。タイプチェック.

2021年8月のReact-Navigation Blogから取得された( https://reactnavigation.org/blog/2021/08/14/react-navigation-6.0/#better-type-safety ):

Reactナビゲーション6では、useNavigationを注釈に付ける必要はありません。これは、宣言マージを使用してグローバルに画面のタイプを定義することによって可能です。

declare global {   
  namespace ReactNavigation {
    interface RootParamList {
      Home: undefined;
      Profile: { userId: string };
      NotFound: undefined;
    }   
  } 
 } 

あなたは読むことができます 私たちのTysscript Docsの詳細

Reactナビゲーション6ドキュメントからの別の例では、すでにパラメータが他の場所で宣言されている場合:

// E.g. RootStackParamList.ts
export type RootStackParamList = {
  Home: undefined;
  Profile: { userId: string };
  NotFound: undefined;
};

// E.g. App.tsx
import { RootStackParamList } from 'path/to/RootStackParamList';
declare global {
  namespace ReactNavigation {
    interface RootParamList extends RootStackParamList {}
  }
}
0
lee_mcmullen