Can';“得不到”;“十字路口”;在typescript中作为requirejs AMD模块加载

Can';“得不到”;“十字路口”;在typescript中作为requirejs AMD模块加载,requirejs,typescript,definitelytyped,Requirejs,Typescript,Definitelytyped,我正在尝试将javascript应用程序移植到使用requirejs的typescript。我正在使用@mhegazy在DefinitelyTyped的类型定义: Typescript编译器给了我以下错误 错误TS2307:找不到外部模块“十字路口” 这在javascript中使用“defines”完成了所有工作 我只是用这个库作为一个完整的例子。我错过了什么?如果TSC真的关注requirejs配置,那么文档就很难挖掘。我知道十字路口取决于js信号。 不同目录中的定义和ts文件是否存在问题?

我正在尝试将javascript应用程序移植到使用requirejs的typescript。我正在使用@mhegazy在DefinitelyTyped的类型定义: Typescript编译器给了我以下错误

错误TS2307:找不到外部模块“十字路口”

这在javascript中使用“defines”完成了所有工作

我只是用这个库作为一个完整的例子。我错过了什么?如果TSC真的关注requirejs配置,那么文档就很难挖掘。我知道十字路口取决于js信号。 不同目录中的定义和ts文件是否存在问题? 从我所读到的内容来看,我甚至不必提出参考意见。但如果我尝试使用相对路径,它也找不到

这是我的应用程序结构

  • index.html
应用程序ts/js

  • app/config.ts
  • app/bootup.ts
  • app/someclass.ts
类型脚本定义

  • 打字/十字路口/十字路口d.ts
  • 打字/要求js/require.d.ts
Javascript库

  • bower_组件/crossroads/dist/crossroads.js
  • bower_组件/requirejs/require.js
index.html包含此脚本

<script data-main="app/config" src="bower_components/requirejs/require.js>
</script>

导入十字路口=需要(“十字路口”)

要使用
import/require
,您需要:

  • 指向TypeScript文件的相对路径
  • 声明的外部模块
在您的情况下,您需要声明一个外部模块,以便TypeScript了解它。例如:

declare module 'crossroads'{
    export = crossroads;
} 

更新我已更新了定义,因此您无需执行此操作:享受

太棒了-我得出了同样的结论,打算做一个拉动请求。为什么declare模块名称必须是字符串?typescript实际上正在读取requirejs配置吗?谢谢另外,十字路口取决于js信号。在使用crossroads的类中包含此依赖项的正确方法是什么?需要js配置垫片处理吗?或者typescript类中应该有一个实际的导入,在这种情况下,它还需要模块声明…我还需要amd依赖项表示法。typescript是否实际读取requirejs配置?不。这意味着其他地方定义的东西可以被要求/导入。为什么明确类型的外部模块上几乎没有类型定义为此声明外部模块?因为这些LIB不在NPM上?编写defs的人没有使用外部模块
/// <reference path="../typings/crossroads/crossroads.d.ts" />
import crossroads = require("crossroads");

class SomeClass{
 // do something with crossroads
}
declare module 'crossroads'{
    export = crossroads;
}