現在、私はType6に移行しているReactプロジェクトをES6で作成しています。 import
ステートメントで問題が発生しています。React ES6をTypeScriptに移行する:import文が機能しない
現在、ES6がインストールされています。NPMを使用してNPM(例:npm install react
)を使用して依存関係をインストールし、BabelをBrowserifyとともに使用して出力ES5バンドルを構築します。 (Browserifyを使用すると、私はちょうどTSは、プロジェクトでの作業を取得しようとしている、必須ではありません。)
典型的にはES6ファイルは次のようになりますリアクト:
import React from "react"
import {Router, Route, Link} from "react-router"
import Button from "./components/Button"
export default class App extends React.Component {
render(){
// ...
}
}
TSに移動し、私がインストールしましたTSC module: "commonjs"
とjsx: "react"
を設定し、すべての私はtsd install react/
を使用して依存関係を反応させるのためのd.ts
ファイルは、*.jsx
から*.tsx
にいくつかのファイルを変換し、そして私は、これらがimport
文でコンパイルエラーを取得:
Error:(1, 8) TS1192: Module '"react"' has no default export.
import Button
ステートメントでエラーは発生しません。 TSCはNPMモジュールの依存関係を解決できないようです。
これを動作させるにはどうすればよいですか?
ありがとう、それは動作します。違いが何であるかについてはまだ少し霧がかかっています。 '{router、route、link}は 'react-router'からどうなっていますか?それを行う方法はありますか? – Aaron
受理されました。 :)まだ少し混乱しています...だから '* as'が必要なのは' d.ts'が 'export ='を使っているからですが、それはインポートされるES6 'export default'に相当すると思いました'import 'を使って' react 'からのReact?私がBabel/Browserifyと一緒に働いた理由はわかりませんが、TSCでセマンティクスが変わったようです。モジュールがどのように解決されているかの違いがあると思いますか? – Aaron
私は 'ReactRouter.Router'構文についても不安です。既存のJSコードは 'Router'として機能したので、' import * as ReactRouter'はどのように実行時に動作しますか? – Aaron