gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:30:17 47 4
gpt4 key购买 nike

我找到的例子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/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com