Ich habe ein React-Projekt, das derzeit in ES6 geschrieben ist, das ich nach TypeScript migriere. Ich habe Probleme mit den import
Aussagen.Migrieren von React ES6 zu TypeScript: Importanweisungen funktionieren nicht
Derzeit mit ES6 Ich installierte React Abhängigkeiten mit NPM, ex npm install react
, und verwenden Sie Babel mit Browserify, um ein Ausgabe ES5-Bundle zu erstellen. (Browserify Verwendung ist keine Voraussetzung, ich versuche nur, um TS mit dem Projekt arbeiten.)
Eine typische Reaktion ES6 Datei sieht wie folgt aus:
import React from "react"
import {Router, Route, Link} from "react-router"
import Button from "./components/Button"
export default class App extends React.Component {
render(){
// ...
}
}
Umzug in TS, ich installiert haben d.ts
Dateien für meine alle Abhängigkeiten Reagieren tsd install react/
verwenden, stellen TSC module: "commonjs"
und jsx: "react"
, konvertiert ein paar Dateien *.jsx
-*.tsx
, und ich bekomme diese Fehler auf den import
Aussagen kompilieren:
Error:(1, 8) TS1192: Module '"react"' has no default export.
Die import Button
Anweisung gibt keinen Fehler. Es scheint, dass TSC die Abhängigkeiten des NPM-Moduls nicht auflösen kann.
Wie kann ich das zum Funktionieren bringen?
Danke, das funktioniert. Noch ein wenig neblig auf was der Unterschied ist. Was ist mit '{Router, Route, Link} von 'react-router'? Gibt es eine Möglichkeit, das zu tun? – Aaron
Akzeptiert. :) Noch ein bisschen verwirrt, obwohl ... so ist der Grund, warum '* benötigt wird, weil die' d.ts' 'export =' verwendet, aber ich dachte, das war äquivalent zu ES6 'export default', die importiert werden würde mit 'Import Reagieren von 'reagieren'? Es ist mir unklar, warum es mit Babel/Browserify funktioniert hat, aber die Semantik scheint sich mit TSC geändert zu haben. Ich denke, es ist ein Unterschied, wie Module gelöst werden? – Aaron
Ich bin auch unsicher über die 'ReactRouter.Router' Syntax. Der existierende JS-Code funktionierte als 'Router', also wie wird' Import * als ReactRouter' zur Laufzeit funktionieren? – Aaron