2017-09-19 28 views
0

我找到了粘贴的代码,下面签入了我们的React/Typescript - JSX/TSX项目。它包含一个尚未解决的Git合并冲突。如何在React,Typescript项目中合并冲突有效

该代码构建(通过熔丝盒)并在浏览器中运行!

“transpiled”代码导致顶层元素被解析为我们组件的根元素,第二个元素(开始“.app-container”)被忽略。

看来,在某些情况下,通过TSX/JSX解释/解析/转码可以忽略git合并冲突。

我的问题是:这是如何工作的?这种行为是故意的吗?

export const App: SFC =() => (
<<<<<<< HEAD 
    <Provider store={window.uglySolution}> 
     <Router history={customHistory}> 
      <Switch> 
       <Route exact path='/' component={Welcome}/> 
       <Route exact path='/advice' component={PageLayout}/> 
       <Route exact path='/login' component={Login}/> 
       <Route exact path='/manage' component={ManageLayout}/> 
      </Switch> 
     </Router> 
    </Provider> 
======= 
    <div className='app-container'> 
     <Provider store={window.uglySolution}> 
      <Router history={customHistory}> 
       <Switch> 
        <Route exact path='/' component={Welcome}/> 
        <Route exact path='/advice' component={PageLayout}/> 
        <Route exact path='/login' component={Login}/> 
        <Route exact path='/manage' component={ManageLayout}/> 
       </Switch> 
      </Router> 
     </Provider> 
    </div> 
>>>>>>> f81b0b1b458e3d41f91faa2e726be6d88a35d9f8 
); 
+0

如果不告诉别人,否则TSC是要干什么,最好忽略任何不好的代码,你可能有。这可能会发生,即使输入错误,这也会生成有效的代码。这是默认行为,但我不会指望它。解决你的冲突。 :) – toskv

+0

也在这种情况下..我会假设合并文本从git只是在模板中结束..因为从tsc的角度来看文本 – toskv

+0

@toskv - 我会如何让Typescript忽略“坏代码”(在这种情况下,您的“其他”声明)? – Lewis

回答

0

它的出现,在某些情况下的git合并冲突虽然可以税务/ JSX解释/分析/ transpilation解决。

给定的代码是编译错误。那说编译错误并不意味着你没有得到任何JS生成的。有一个选项noEmitOnError可以防止这种情况发生,但是那说你应该看到一个编译错误并且修复它,即使没有这个选项。

更多

https://basarat.gitbooks.io/typescript/content/docs/why-typescript.html