使用TypeScript声明RequireJS依赖项

时间:2017-01-20 10:19:07

标签: javascript typescript requirejs frontend

我正在使用带有RequireJS的TypeScript。正如您在下图中所看到的,我使用RequireJS配置定义了一些导入;当然,这些导入来自<script>标签:

enter image description here

TypeScript无法看到这些声明,因此我只想将它们声明为全局或其他东西,以避免转换错误。 在这种情况下最好的做法是什么?一切似乎运行良好,但我确实得到了更多的编译错误,当然还有红色语法突出显示。

在第一张图片中,我们看到requirejs无法识别,在下图中我们也看到TypeScript不知道'redux'是什么,(但它在RequireJS配置)。

enter image description here

所以我想做的是告诉TypeScript以下依赖项:requirejs,redux,react,rxjs,socketio等

1 个答案:

答案 0 :(得分:1)

问题的一部分是我需要运行:

npm install -D @types/requirejs
npm install -D @types/redux

然后在我的tsconfig.json中添加:

  "types": [
      "node",
      "lodash",
      "react",
      "react-dom",
      "redux",
      "react-redux",
      "async",
      "requirejs"
    ],
    "typeRoots": [
      "node_modules/@types"
    ],

但是,为了解决TypeScript无法理解前端<script>标记依赖关系的问题,看起来我们可以这样做:

https://weblog.west-wind.com/posts/2016/Sep/12/External-JavaScript-dependencies-in-Typescript-and-Angular-2

  

取消引用Globals为了使Typescript编译器满意   并且最终没有编译错误,或者有一个类型的船载荷   进口你只能使用一次或两次,有时更容易   只需自己管理外部库。使用a导入它   常规脚本标记,或打包为单独的供应商包的一部分   然后在主页面中简单引用。

     

因此,我们可以直接导入而不是使用导入来拉入库   像过去一样使用标签:

     

然后在任何要使用它们的Typescript类/组件中   库通过显式取消引用每个库全局变量   明确使用声明并将它们转换为任何:

declare var redux:any; 
declare var socketio: any;