システム開発

【簡単】React NativeのプロジェクトにTypeScriptを導入するには?【アプリ開発に!】

v0.57以降React Nativeが公式でTypeScriptに対応するようになりました。

Babel7でTypeScriptをトランスコンパイル出来るようになったため、その仕組みをReact Nativeが利用する形で実現されています。 ただし、Babelは古いJavaScriptへのトランスコンパイルを行うだけで、型チェックまでは行ってくれません。

そのため型チェックはtscコマンドで別途実行する必要があります。

そこで、この記事ではBabel7でReact Native+TypeScriptを実行しつつ、tscコマンドによる型チェックが出来る環境を構築するための手順を解説していきます。

  • React Nativeでアプリ開発を行いたい方
  • React NativeのプロジェクトにTypeScriptを導入する方法を知りたい方
  • React Nativeの環境開発の方法を知りたい方

これらに当てはまる方におすすめの記事となっています。これを読めばTypeScriptをReact Nativeに導入する方法が丸わかりですよ。

サンプルプロジェクトを作成

まずは下記コマンドでReact Nativeのサンプルプロジェクトを作成します。

react-native init TSSampleApp 

シミュレーターを起動

サンプルプロジェクトが作成できたら、
下記コマンドを実行して画面が正常に表示されることを確認します。

npm run ios 

今回はTypeScriptの環境構築がメインですので、Androidは割愛します。

App.jsをApp.tsxにリネーム

次に下記コマンドでApp.tsxにファイル名をリネームします。

mv App.js App.tsx 

.tsxはJSXを返すファイルでTypeScriptを利用する場合の拡張子です。
リネーム後にシミュレーターを確認すると下記のエラーが表示されます。

これは利用しているReactやReact Nativeのライブラリの型定義ファイルが見つからず、
TypeScriptのコンパイルエラーになるためです。

ライブラリと型定義ファイルをインストール

次に下記コマンドでTypeScript本体とReact Native開発に必要な型定義ファイルをインストールします。
インストールするライブラリはReact Nativeの公式ドキュメントに従っています。

yarn add --dev typescript @types/jest @types/react @types/react-native @types/react-test-renderer 

@typesで始まっているTypeScriptの型定義ファイルはDefinitelyTypedで管理されています。

Metro Bundlerを再起動する

ライブラリのインストールが完了したら、上記のMetro Bundlerを再起動します。

起動が完了したら下記画面が表示されるようになります。
これでTypeScriptをBabelでトランスコンパイルして実行出来るようになりました。

React Native用のtsconfig.jsonを作成

次にtscコマンドでTypeScriptの型チェックが出来るようにします。

下記の内容でtsconfig.jsonをプロジェクトのルートに作成します。

{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"isolatedModules": true,
"jsx": "react",
"lib": ["es6"],
"moduleResolution": "node”,
"noEmit": true,
"strict": true,
"target": "esnext"
},
"exclude": [
"node_modules",
"babel.config.js",
"metro.config.js",
"jest.config.js"
]
}

noEmit: trueを設定することでJavaScriptのトランスコンパイルはBabelに任せ、 tscコマンドはファイル出力はせず型チェックのみ行うようにしています。

上記の設定内容もReact Nativeの公式ドキュメントに従っています。

tscコマンドをnpm-scriptsのbuildに追加

次にtscコマンドをnpm-scriptsのbuildで実行できるようにpackage.jsonを修正します。

"scripts": {
     "build": "tsc",
     …
 },

追加できたら下記コマンドを実行します。

npm run build 

実行すると以下のようなエラーが表示されます。

> tsc
App.tsx:26:18 - error TS2304: Cannot find name 'React$Node'.
 26 const App: () => React$Node = () => {
                     
 App.tsx:35:12 - error TS2304: Cannot find name 'global'.
 35           {global.HermesInternal == null ? null : (
     
 Found 2 errors.

React$NodeReact.ReactNodeに書き換え、
HermesInternalに関してはCannot find name ‘global’.ts(2304) のイシューを参考に修正します。

flowの設定ファイルを削除

TypeScriptテンプレートを利用せずにReact Nativeアプリを作成した場合、デフォルトではflowを利用するようになっています。

TypeScriptを利用する場合は不要なので、 下記コマンドで設定ファイルを削除します。

rm .flowconfig

終わりに

これでTypeScriptを利用してReact Native開発が行えるようになりました。

TypeScriptを利用してReact Native開発を行うことで、JavaScriptのコードのみでiOSとAndroid両方のアプリを開発することができます。

この記事では環境構築の手順を紹介していきました。こちらの記事では実際の画面の開発について解説しています。
ぜひ合わせてチェックしてみて下さい。


こうしたアプリ開発を外注してみるのはいかがでしょうか。 dehaソリューションズではオフショア開発によって低コストで迅速な開発をサポートしています。

Laravelに関して詳しくお話を聞きたい方、開発相談や無料お見積りをしたい方はこちらからご気軽にお問い合わせください。

▼ dehaソリューションへの簡単見積もりの依頼はこちら

Mai Tran

Recent Posts

Microsoft PowerAppsを活用してローコードで業務アプリを簡単に開発

現代のビジネス環境では、迅速な意思決定と効率的な業務運営が求められます。その中で、企業の業務プロセスをデジタル化するために、カスタムアプリの開発が重要な役割を果たしています。 しかし、従来のアプリ開発は多くの時間とリソースを必要とし、専門的なプログラミングスキルを持つエンジニアが必要です。 この課題を解決する手段として注目されているのが、「ローコード」開発です。 この記事ではそんなローコード開発に関して、代表的なツールMicrosoft PowerAppsについて解説していきたいと思います。 Microsoft PowerAppsが気になっている方 ローコード開発を行いたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばローコード開発で人気のMicrosoft PowerAppsについてその特徴が丸わかりですよ。 (more…)

3 days ago

オフショア開発におけるAI開発の実績まとめ

近年、AI技術の進展とともに、企業のデジタルトランスフォーメーション(DX)推進が急務とされ、多くの企業がAIソリューションの開発を進めています。 オフショア開発におけるAIプロジェクトは、技術的な知見と効率的な体制が求められます。 この記事では、DEHAソリューションズでのAI開発事例について紹介し、それぞれのプロジェクトで実現されたユニークな機能や開発体制についてまとめます。 オフショア開発に興味がある方 AI開発を行いたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばAI開発での具体的な事例が丸わかりですよ。 (more…)

4 days ago

ベトナム進出の日系製造業がDX化の今と今後|自動化による生産性向上

2024年現在、米中摩擦や新型コロナウイルスによるサプライチェーン混乱の影響を受け、製造業の生産拠点としてASEAN地域の需要が急速に増加しています。 その中でも特に注目されるのが、安価な労働力と豊富な人材を持つベトナムです。日系企業はこうした環境を活用し、積極的にベトナムへの進出を進めています。 しかし同時に、ASEAN域内では人件費上昇や人材確保の難しさといった課題も浮上しており、それに対応するために製造現場の自動化やDX化への関心が高まっています。 そこでここではそんなベトナムのDX化について、現状をお伝えしていきたいと思います。 ベトナム進出をお考えの方 ベトナムのDX化に興味がある方 これらに当てはまる方におすすめの記事となっています。これを読めばベトナム進出の日系企業のDX化の現状がわかるのはもちろん、今後の予測も分かりますよ。 (more…)

2 weeks ago

.NETでマイグレーション開発ならオフショアで

近年、企業のデジタルトランスフォーメーション(DX)が進む中で、ITインフラの老朽化問題も無視できなくなってきました。 レガシーシステムから新しいプラットフォームへの移行、特に.NETなどの最新フレームワークを用いたマイグレーションは、ビジネスの成長に不可欠です。 しかし、こうしたマイグレーションにはコストやリソースの確保が難しいという課題も付きまといます。ここで注目されるのがオフショア開発の活用です。 この記事では、そんな.NETによるマイグレーション開発をオフショアで実施するメリットについて詳しく解説します。 オフショア開発に興味がある方 .NETでマイグレーション開発を行いたいとお考えの方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば.NETでのマイグレーション開発をオフショア開発で行うメリットはもちろん、注意点なども丸わかりですよ。 (more…)

2 weeks ago

BIZASKとは?特徴と料金プランを徹底解説

近年、企業における生成AIの導入が進んでいますが、その中でも注目を集めるのがAIアシスタントです。 弊社のBIZASKは、OpenAIの技術を基盤にした法人向け生成AIチャットボットサービスで、企業の業務効率化を強力に支援します。 この記事では、BIZASKの特徴や料金プランについて詳しく解説します。 生成AIアシスタントサービスが気になる方 業務効率を上げたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばBIZASKの特徴が丸わかりですよ。 (more…)

3 weeks ago

クラウド型販売管理システム|導入メリットを徹底解説

クラウド型販売管理システムは、企業の販売プロセスを効率的に管理・最適化するためのソリューションで、クラウド上で提供されるのが特徴です。 従来のオンプレミス型システムとは異なり、初期投資を抑え、運用コストを削減しながらも、常に最新の機能とセキュリティ対策を利用できる点が魅力です。 この記事では、クラウド型販売管理システムのメリットと導入のポイントについて詳しく解説します。 クラウド型販売管理システムに興味がある方 販売業務を行なっている方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばクラウド型販売管理システムに関して、そのメリットなども丸わかりですよ。 (more…)

4 weeks ago