2016-05-31 3 views
0

Ich versuche Typescript mit tsd zu verwenden (habe noch kein Upgrade auf typings), React und JSX zusammen ... oh my! Sprechen Sie über die Build-System Feinheiten ...Warum verursacht ('reaktiv') Ursache "Import Deklarationskonflikte" mit Typoskript?

Meine .tsx Datei (Typoskript + JSX) fein kompiliert (mit gulp-typescript), wenn ich import * as React from 'react' verwenden. Ich erhalte eine Fehlermeldung, aber wenn ich eine require Anweisung:

./typings/react/react-global.d.ts(17,1): error TS2440: Import declaration conflicts 
with local declaration of 'React' 

würde ich nicht überrascht gewesen, wenn ich importiere es einfach falsch, und es gibt einige Unterschiede zwischen dem alten require und neuen import, die ich habe nicht noch grokked, aber ich dachte, dass der besondere Typ Konfliktfehler, den ich bekam, seltsam war.

Nur so verstehe ich, wie Importe mit globalen tsd-Deklarationen besser interagieren, warum verursacht die require-Anweisung hier einen Fehler? Hier

ist mein index.tsx:

/// <reference path="../typings/tsd.d.ts" /> 

const config = require('../config') 
const express = require('express') 
const reactDomServer = require('react-dom/server') 
const app = express() 

// THIS WORKS 
import * as React from 'react' 

// THIS DOES NOT 
//const React = require('react') 

app.get('/', (req, res) => { 
    const element = <h1>Hello Denver!</h1> 
    res.send(reactDomServer.renderToString(element)) 
}) 

const server = app.listen(process.env.port || config.port,() => 
    console.log(`Server listening on port ${server.address().port}!`) 
) 

Hier ist meine ../typings/tsd.d.ts:

/// <reference path="react-router/history.d.ts" /> 
/// <reference path="react-router/react-router.d.ts" /> 
/// <reference path="react/react-addons-create-fragment.d.ts" /> 
/// <reference path="react/react-addons-css-transition-group.d.ts" /> 
/// <reference path="react/react-addons-linked-state-mixin.d.ts" /> 
/// <reference path="react/react-addons-perf.d.ts" /> 
/// <reference path="react/react-addons-pure-render-mixin.d.ts" /> 
/// <reference path="react/react-addons-test-utils.d.ts" /> 
/// <reference path="react/react-addons-transition-group.d.ts" /> 
/// <reference path="react/react-addons-update.d.ts" /> 
/// <reference path="react/react-dom.d.ts" /> 
/// <reference path="react/react-global.d.ts" /> 
/// <reference path="react/react.d.ts" /> 
/// <reference path="node/node.d.ts" /> 
/// <reference path="express-serve-static-core/express-serve-static-core.d.ts" /> 
/// <reference path="express/express.d.ts" /> 
/// <reference path="mime/mime.d.ts" /> 
/// <reference path="serve-static/serve-static.d.ts" /> 
+0

können Wenn Sie Globals verwenden müssen Sie nicht "importieren" oder "erfordern irgendwas. Wenn Sie Module verwenden, sollten Sie keine globalen Referenzen verwenden. – Aaron

+0

Was Sie gesagt haben, macht Sinn. Wenn ich den Import entferne oder benötige, bekomme ich jedoch einen "React" undefined Fehler. Es scheint, dass es irgendeine Art von Import erfordert. –

+0

Sind Sie einschließlich reagieren in einem '

Verwandte Themen