2016-05-31 85 views
0

我想与tsd(还没有升级到typings),React和JSX一起使用Typescript ...哦,我的!谈谈构建系统的复杂性...为什么require('react')会导致与打字稿“导入声明冲突”?

我使用import * as React from 'react'时,我的.tsx文件(Typescript + JSX)编译得很好(使用gulp-typescript)。我得到一个错误,但是,当我使用require声明:

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

我不会一直,如果我只是进口的错感到惊讶,有老require和新import我没有有些区别grokked,但我认为我得到的特定类型冲突错误是奇怪的。

只是让我理解导入如何与全局tsd声明更好地相互作用,为什么require声明会在这里导致错误?

这里是我的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}!`) 
) 

这里是我的../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

如果你使用全局你不需要'import'或'require什么都可以。如果你正在使用模块,那么你不应该使用全局引用。 – Aaron

+0

你说的是有道理的。如果我删除导入或需要,但是,我得到一个''反应“未定义的错误。看起来它确实需要某种导入。 –

+0

您是否在'

相关问题