打字稿:呈现自定义脚本标签会引发错误TS1005:“}”

时间:2018-07-19 13:23:37

标签: angularjs reactjs typescript

我有一个类MyScriptTag.tsx,我打算在其中渲染对包含在主布局中的服务库的调用。看起来像这样:

import React from 'react';
import * as Radium from 'radium';
import { getUser } from '../actions/user';


const MyScriptTag = () => {
  return (
    <script>
      window['ExtLibrary'] = window['ExtLibrary'] || { _queue: [], Push: function (o, p) {this._queue.push({ type: o, data: p }); } };
      ExtLibrary.Push('User', {
        eMail: getUser().email
      });
    </script>
  );
};

const Component = Radium(MyScriptTag);
export default Component;

它通过以下方式包含在MainLayout.tsx类中:

class MainLayout extends React.Component<any, any> {
  render() {
    const { isLoggedIn, isLoggingIn } = this.props;

    return (
      <div>
        <section style={[styles.base]}>
          ...
          <MyScriptTag />
        </section>
      </div>
     )
   }
 }

代码未编译,这是我收到的错误消息:

error TS1005: '}' expected.

可能是个新手,因为我以前没有使用过打字稿。但是我找不到解决办法,因此谷歌搜索没有帮助。

2 个答案:

答案 0 :(得分:1)

您在}的末尾错过了一个MainLayout.tsx,以关闭class

答案 1 :(得分:0)

我认为您应该在JSX中用{}包装代码

<script>
      {
          window['ExtLibrary'] = window['ExtLibrary'] || { _queue: [], Push: function (o, 
  p) {this._queue.push({ type: o, data: p }); } };
          ExtLibrary.Push('User', {
            eMail: getUser().email
          });
      }
</script>