RORK LABEN
PLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっていますPLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっています
記事一覧/開発ツール
開発ツール/2026-04-28中級

Rork が生成したコードの TypeScript 型エラーが消えない時に試す5つの修正パターン

Rorkが出力したReact NativeコードでTypeScriptの型エラーが消えないときに疑う5つのパターンです。Propsの暗黙のany、useStateの型推論ミス、@typesの欠落、ナビゲーションparam型の食い違い、as anyのごまかしについて具体的な書き換え方を示します。

Rork547TypeScript8React Native233型エラーデバッグ22AI 生成コード

Rork で生成したコードを VS Code で開いた瞬間、赤い波線が画面いっぱいに走っている経験はないでしょうか。そのままプロンプトに「型エラーを直して」と打ち込んでも、AI は別の場所で同じエラーを再発させ、修正と破壊を行ったり来たりすることがあります。

私がいくつかのアプリを Rork で作ってみて気づいたのは、しつこく残る型エラーには共通したパターンがあるということです。AI に丸投げして直らない場合は、人間側で型を一度だけ整えてあげると、その後の生成が驚くほど安定します。今回はそのときに役立つ5つの修正パターンを、実際のコード例とともに紹介します。

パターン1: 暗黙の any(Props の型未定義)

最もよく見るのが、コンポーネントの props に型を付け忘れているパターンです。AI は機能を急いで実装したいので、型定義を後回しにすることがあります。

// ❌ Rork がよく出すコード(暗黙の any)
export function ProductCard({ name, price, onPress }) {
  return (
    <Pressable onPress={onPress}>
      <Text>{name}</Text>
      <Text{price.toLocaleString()}</Text>
    </Pressable>
  );
}
// → strict モードで「Parameter 'name' implicitly has an 'any' type」が無限に出る

修正は型エイリアスを切り出して props に付けます。

// ✅ 型を付けて再生成を安定させる
type ProductCardProps = {
  name: string;
  price: number;
  onPress: () => void;
};
 
export function ProductCard({ name, price, onPress }: ProductCardProps) {
  return (
    <Pressable onPress={onPress}>
      <Text>{name}</Text>
      <Text{price.toLocaleString()}</Text>
    </Pressable>
  );
}

このコンポーネントを次に AI に編集させると、型を維持したまま追加実装してくれることが増えます。型は AI への暗黙のドキュメントとして機能します。

パターン2: useState の型推論ミス

useState(null)useState([]) のような初期値だけだと、TypeScript は null 型や never[] 型と推論してしまい、後で値を入れた時に型エラーが噴出します。

// ❌ never[] と推論されて push できない
const [items, setItems] = useState([]);
setItems([...items, { id: 1, name: "コーヒー" }]); // 型エラー
 
// ❌ null しか入らないと推論される
const [user, setUser] = useState(null);
setUser({ name: "Masaki" }); // 型エラー

ジェネリクスで「これから何を入れるのか」を明示します。

// ✅ 入れたい型を最初に教える
type Item = { id: number; name: string };
const [items, setItems] = useState<Item[]>([]);
 
type User = { name: string } | null;
const [user, setUser] = useState<User>(null);

ここを直すと、画面遷移後の API レスポンス処理まで一気に型が通ることが多いです。状態関連で「画面が更新されない」という別の問題が出ていたら、Rork で state が更新されない・再描画されない時の対処法 も併せて確認してみてください。

パターン3: ライブラリ型定義の不整合(@types の欠落)

Expo や React Navigation のような大型ライブラリを Rork が組み込んだ時、対応する型定義パッケージが入っていないことがあります。VS Code の Problems パネルに「Could not find a declaration file for module '...'」と出ていたら、これが原因です。

# ❌ よくあるエラー
# Could not find a declaration file for module 'react-native-svg'
 
# ✅ 型定義をインストール(Expo SDK の管理下なら expo install を優先)
npx expo install react-native-svg
 
# 公式が型定義を内包していない古めのライブラリの場合
npm install --save-dev @types/lodash

Rork 上で動かしている場合は、プロンプトで「react-native-svg の型定義を含めて再構成して」と明示的に指示すると、expo install を含む手順を生成してくれます。

パターン4: ナビゲーション param 型の食い違い

React Navigation を使ったコードで一番厄介なのが、画面遷移パラメータの型エラーです。AI は画面ごとにバラバラな型を生成しがちで、navigate の引数で必ずエラーが出ます。

// ❌ 各画面で別々に型を書いていて整合性が取れない
type DetailParams = { productId: number };
navigation.navigate("Detail", { productId: "abc" }); // 数値と文字列でズレる

ルーター全体の param 型を1か所に集約します。

// ✅ ルートパラメータを単一の型として定義
export type RootStackParamList = {
  Home: undefined;
  Detail: { productId: number };
  Profile: { userId: string };
};
 
// 各画面はこの型を参照する
type DetailScreenProps = NativeStackScreenProps<RootStackParamList, "Detail">;
 
export function DetailScreen({ route, navigation }: DetailScreenProps) {
  const { productId } = route.params; // 型が一意に決まる
  return <Text>{productId}</Text>;
}

RootStackParamListApp.tsx の近くに置いておくと、Rork は次回の生成からこの型を参照するようになります。

パターン5: AI が as any でごまかしている時の直し方

最後に注意したいのが、何度も型エラーを直させると AI が as any で黙らせるパターンです。コンパイルは通りますが、本番でクラッシュする原因になります。

// ❌ AI が逃げに使うパターン
const data = (response as any).items.map((x: any) => x.name);

検索コマンドで as any の数を可視化して、計画的に削っていきます。

# プロジェクト全体の "as any" を数える
grep -rn "as any" src/ | wc -l
 
# 一覧で確認
grep -rn "as any" src/

代替として、API レスポンスは Zod や TypeScript の型ガードで安全に絞り込みます。

// ✅ Zod で実行時バリデーション + 型推論
import { z } from "zod";
 
const ItemSchema = z.object({ id: z.number(), name: z.string() });
const ResponseSchema = z.object({ items: z.array(ItemSchema) });
 
const parsed = ResponseSchema.parse(response);
const names = parsed.items.map((x) => x.name); // 型が string[] に確定

AI が再び as any を入れてきたら、プロンプトで「as any を使わずに型ガードで実装して」と明示するのが効きます。Rork の AI が以前のコードを上書きしてしまう挙動が気になる場合は、Rork の AI に既存コードを壊されない指示の出し方 も参考になります。

全体を振り返って — まず1ファイルだけ型を整える

5つのパターンを紹介しましたが、一度に全部直そうとすると挫折しやすいです。私のおすすめは、今いちばんよく触っている1ファイルだけを完璧に型付けすることです。そのファイルが「型のお手本」になり、AI は次の生成からそれに合わせてくれます。

useEffect 関連のエラーが TypeScript エラーと混在している場合は、Rork の useEffect 無限ループを解消するデバッグ手順 で根本原因を切り分けてから型を整えると、より早く安定状態に到達できます。

シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

開発ツール2026-07-13
WebViewのpostMessageは投げたら終わり — 相関IDで要求と応答を結ぶブリッジを設計する
WebView と React Native の postMessage は片道通信で、送った処理が成功したのか分かりません。相関IDと応答を組み込んだ要求・応答型ブリッジを、動く TypeScript コードで設計します。
開発ツール2026-06-20
Rork が直せるバグと自分で直すバグを見分ける — エクスポートコードのトリアージ手順
Rorkに任せて直せるバグと、エクスポートしたReact Native/Expoコードを自分で手当てすべきバグを見分けるトリアージ手順です。エラーを層で分ける切り分け、非同期処理の握りつぶし、OSごとの挙動差、権限とATTの順序など5つの手当てを動くコードで示します。
開発ツール2026-06-17
Rork が自分で直せない3割を見極める — エクスポート前提の手直しワークフロー
Rork は遭遇したバグのおよそ7割を自力で直しますが、残り3割は手作業が必要です。再プロンプトで粘るべきか、エクスポートして自分で直すべきかを切り分ける判断基準と、動くコードでの手直し例をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →