requirejs - 将 requireJS 与 typescript 一起使用的正确方法是什么?

标签 requirejs typescript

我找到的例子herehere说使用模块()。但是,当我编译时,我收到“警告 TS7021:'module(...)' 已弃用。请改用'require(...)'。”

所以有几个基本问​​题:

  1. 当使用 typescript 和 requireJS 时,如何访问一个类 来自另一个 .ts 文件的 .ts 文件,requireJS 将加载第二个文件 文件并给我第一个文件中的类(class)?
  2. 有没有办法对两个 .ts 文件执行标准 requireJS 方法,其中顶部的 define() 加载第二个 ts 文件并返回它在最后构建的对象?
  3. 与问题 #2 有点相同。从 java 脚本文件中,我可以在 type 脚本文件上使用 define() 构造来获取实例化对象吗?如果是,怎么做?

更新:下面给我一个 tsc 编译错误:

///<reference path='../../libs/ExtJS-4.2.0.d.ts' />
///<reference path='../../libs/require.d.ts' />

import fdm = require("./file-definitions");
require(["../../scripts/ribbon"], function () {

export module Menu {

    export class MainMenu {

最佳答案

我会评论 David 对 basarat 回答的回复(关于模块和类),但我没有这个名声。我知道这个问题已经过时了,但我没有在其他地方找到答案。

我通过使用 basarat 的视频并结合其他一些资源,成功地为像 David Thielen 这样的类(class)找到了答案。请注意,我不再有我的 ts 源文件的条目,但我有 amd-dependency 和 import 语句。在带有 palantir 的 TS 插件的 Eclipse 中,我的代码完成和从使用跳转到定义的能力仅使用 amd-dependency 和 import 语句。头文件仍然需要语句,因为它们与部署无关,仅供 TS 编译器使用。另请注意,.ts 文件扩展名用于引用语句而不是 amd 和 import 语句。

在 Utils.ts 中我有:

///<reference path="headers/require.d.ts" />

export function getTime(){
    var now = new Date();
    return now.getHours()+":"+now.getMinutes()+':'+now.getSeconds();
}

在 OntologyRenderScaler 中我有:

///<reference path="headers/require.d.ts" />

///<reference path="headers/d3.d.ts" />
///<reference path="headers/jquery.d.ts" />

///<amd-dependency path="Utils" />

import Utils = require('./Utils');

export class OntologyRenderScaler {
...
Utils.getTime();
...
}

在 OntologyMappingOverview.ts 中我有:

///<reference path="headers/require.d.ts" />

///<reference path="headers/d3.d.ts" />
///<reference path="headers/jquery.d.ts" />

///<amd-dependency path="Utils" />
///<amd-dependency path="OntologyGraph" />
///<amd-dependency path="OntologyFilterSliders" />
///<amd-dependency path="FetchFromApi" />
///<amd-dependency path="OntologyRenderScaler" />
///<amd-dependency path="GraphView" />

///<amd-dependency path="JQueryExtension" />

import Utils = require('./Utils');
import OntologyGraph = require('./OntologyGraph');
import OntologyRenderScaler = require('./OntologyRenderScaler');
import OntologyFilterSliders = require('./OntologyFilterSliders');
import GraphView = require('./GraphView');

export class OntologyMappingOverview extends GraphView.BaseGraphView implements GraphView.GraphView {
    ontologyGraph: OntologyGraph.OntologyGraph;
    renderScaler: OntologyRenderScaler.OntologyRenderScaler;
    filterSliders: OntologyFilterSliders.MappingRangeSliders;
...
this.renderScaler = new OntologyRenderScaler.OntologyRenderScaler(this.vis);
...
}

我还没有设法(还!)让事情像上面建议的 codeBelt 那样工作,但我们在他的博客上进行的一次交流表明,如果我让他的方法工作(在文件底部导出 MyClass),那么我不需要将导入的标识符与类名加倍。我想它会导出感兴趣的类而不是它在其中定义的命名空间(隐式外部模块,即 TypeScript 文件名)。

关于requirejs - 将 requireJS 与 typescript 一起使用的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079464/

相关文章:

主干.js + require.js + 用户认证

javascript - 使用 RequireJS 动态添加 Brightcove 视频播放器

javascript - 在 Angular 2 中使用浏览器化的 JS 库

playframework - Play Framework 2 & requirejs - 在 dist 构建中不尊重路径

javascript - backbone.js 无法扩展路由器

javascript - CommonJS、AMD 和 RequireJS 之间的关系?

typescript - Browserify + Watchify + Tsify + Gulp 的性能问题

javascript - 如果不存在,则将输入值添加到数组

typescript - 仅当接收函数也返回 promise 时,如何将返回类型键入为 promise ?

typescript - Typescript 1.4 中的联合类型可以用于声明 d3 样式 "chained"getter/setter 吗?