我想在ASP.Net MVC应用程序的前端打字稿中专门使用。目前这个模块没有模块,依赖关系跟踪越来越繁重。因此是时候引入RequireJS并使用Typescript对AMD的支持。typescript编译器标记requirejs填充定义为错误。如何解决它?
我已经阅读了很多关于这个,我想我非常接近。但是,我遇到了打字机导入语句的问题,说它找不到在requireJS配置中定义的填充模块。因此,如果typescript只是将模块的名称传递给JS代码中的require函数,那么一切都会很好。但它没有,它只是抛出一个错误。所以问题是我该如何写这些JS垫片的导入声明?
下面是一个例子: app.ts
import g = require("Api/greeter");
import $ = require("jquery");
import respond = require("respond");
var greeter = new g.Greeter("#content");
greeter.start();
让我们假设这是用于页面的主TS和招待员是该页面的视图模型。但我知道我需要在页面上使用jquery和bootstrap。我有这样的设置为我requireJS配置:
///
通知我有回应,要求引导和引导,需要jQuery的。所以有app.ts需要回应应该(并且)吸引响应,引导和jQuery。
我知道我在app.ts中有一个多余的require(“jQuery”)。这仅用于说明目的。即,该行工作正常 - TS将jQuery识别为有效的模块名称并将其放入生成的编译的JS文件中。但是,TS不承认“回应”作为一个模块的名字,我得到一个编译错误:
Cannot find module 'respond'.
我已经安排了这样的我的文件:
Scripts
->Api
--> Greeter.ts
-> App
--> App.ts
-> libs
--> jQuery-3.1.1.js
--> bootstrap.js
--> respond.js
我认为我做得很好时的jQuery工作,但我如何得到回应或任何其他纯粹的JS库,我不得不拉入工作?根据我在TS文档中可以看到的,require()的参数应该是JS文件的有效路径,因为这是编译器如何获取类型信息。但是,如果是这样的话,为什么jQuery按照我定义的方式工作?它与respond.js没有区别。
感谢 格雷格
我可能刚刚回答了我自己的问题。我认为这里重要的信息是我安装了jQuery.d.ts和require.d.ts,但没有得到一个.d.ts文件来作出回应。 我想了一想,因为我试图推动包括淘汰赛。 VS在击倒时给了我同样的错误,就像在回应中一样。然后我安装了knockout.d.ts,突然间我的错误消失了。 –