typescriptエラー


react-nativeとtypescriptで勉強していたとき、本当にでたらめな間違いに遭遇しました。


タイプがstring|nullのパラメータは、タイプがstringのパラメータに割り当てることはできません.空のフォーマットはstringフォーマットに割り当てることはできません.

1.何が間違っているのか


1.コードを見てから

const key = 'todos';
const rawTodos = await AsyncStorage.getItem(key);
const savedTodos: ITodos[] = JSON.parse(rawTodos);
  • AsyncStorageのtodosキーを使用してオブジェクト値を取得し、rawTodos変数に格納します.
  • rawTodosに保存されているオブジェクトJSON.parseでパーティション化し、savedTodos変数に格納します.
  • このときJSONparse(rawTodos)では、rawTodosには赤い下線があり、上のエラーは
  • 減少した.

    2.何が問題なのか

  • このコードのエラーはtypescriptによって発生し、タイプが一致しないエラーは、rawTodosでタイプが
    const rawTodos: string | null
    と指定されても、上記のエラーは消えません.

    2.解決方法

  • は本当に百花が咲き乱れていて、本当に簡単に
  • を解決しました.

    1.解決方法1

    const key = 'todos';
    const rawTodos = await AsyncStorage.getItem(key);
    if (!rawTodos) {
      throw new Error('No saved todos');
    }
    const savedTodos: ITodos[] = JSON.parse(rawTodos);
    上のコードのように、rawTodosがいなければnullとなり、処理を行います

    2.解決方法2


    tsconfig.jsonで
    strictNullChecks: false
    次のように設定
    typescriptで開発すると、現在のようにnullチェックに力を入れている場合がありますが、falseにするとゆったりとした仕上がりになります

    3.終了


    私はtypescriptを勉強していて、本当に多くの困難に直面しました.
    特にそれらのエラーは、グーグルのリンクでも見つかりません.
    typescriptをうまく処理するのは難しい...