【发布时间】:2014-04-17 19:37:48
【问题描述】:
这是关于the differences between internal and external modules 的问题的后续(某种程度上)。
我想使用外部模块,因为我们将有一个非常大的程序。问题是,如果我创建一个类 rectangle.ts:
export class Rectangle {
public x : number;
public y : number;
public width : number;
public height : number;
}
然后使用:
import rectangle = require("rectangle");
// or is it "import rectangle = module("rectangle");"?
var rect = new rectangle.Rectangle();
如果外面有另一个 Rectangle 类会发生什么?我需要担心命名空间冲突吗?或者我是否安全,因为我调用了 require 并且正在使用 .ts 文件来明确指定类并且全局命名空间中没有任何内容?
【问题讨论】:
-
不确定“另一个”
Rectangle类是什么意思?如果您正在确定范围,那么可能出现问题的唯一方法是在同一个命名空间中引入第二个Rectangle。所以,也许,我不清楚你在问什么。不,它不再是module('xyz')。这已被弃用。 -
@WiredPrairie - 我想你已经回答了。我担心的是,rectangle.ts(或实际上是 rectangle.js)创建了一个名为 Rectangle 的全局类(因此也是对象),它可能与另一个名为 Rectangle 的全局对象冲突。不是这样吗?除非他们导入,否则没有其他人可以看到该类?
-
例如,如果您将
Rectangle放入Shapes模块并将其导入,则其范围将限定为Shapes。如果您使用的是 AMD 或 CommonJS 模块,那么只有通过错误配置才会导致冲突。这是可能的,但需要努力。 :) -
@WiredPrairie 好的,谢谢。 ps - 每次我开始认为我理解 typescript 时,我都会被其他东西绊倒,这让我意识到我不太理解它(还)。
标签: browser module requirejs typescript