如何使用AMD模块在普通js中创建打字稿类的对象实例

戴纳隆

可以说我有以下文件tests.ts

module tests {

    export class Greeter
    {
        sayHello() {
            console.log("hello world");
        }
    }
}

并将其编译为和AMD模块。我该如何在常规JavaScript(不是打字稿!)文件中创建Greeter的对象实例?

我在想类似的东西:

require(['tests', function(tests) {
    var greeter = new tests.Greeter();
    greeter.sayHello();
}

但这似乎不起作用-调试器向我显示测试是针对的,__proto__但我找不到其中的成员“ Greeter”。

瑞安·卡瓦诺(Ryan Cavanaugh)

您已经export在顶层忘记了关键字module,因此顶层代码块实际上不会导出任何可见的外部模块。

另外,请参考TypeScript中模块“ Needless Namespacing”陷阱:

如果要将程序从内部模块转换为外部模块,则很容易得到一个如下所示的文件:

shapes.ts

 export module Shapes {
     export class Triangle { /* ... */ }
     export class Square { /* ... */ } }
 }

Shapes的顶级模块无缘无故地包裹了Triangle和Square。这会使您的模块的使用者感到困惑和烦恼:

shapeConsumer.ts

 import shapes = require('./shapes'); var t = new
 shapes.Shapes.Triangle(); // shapes.Shapes?

TypeScript中外部模块的主要功能是两个不同的外部模块将永远不会在同一作用域中提供名称。由于外部模块的使用者决定要为其分配的名称,因此无需主动将导出的符号包装在名称空间中。

为了重申为什么不应该为外部模块内容命名空间,命名空间的一般思想是提供结构的逻辑分组并防止名称冲突。因为外部模块文件本身已经是一个逻辑分组,并且其顶层名称由导入该文件的代码定义,所以不必为导出的对象使用附加的模块层。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用AMD时如何定义和使用打字稿中的枚举?

来自分类Dev

如何使用打字稿和敲除调用对象实例方法

来自分类Dev

在打字稿中使用其他类的函数创建类实例

来自分类Dev

如何使用打字稿编写marionettejs模块?

来自分类Dev

如何使用AMD模块在普通js中创建打字稿类的对象实例

来自分类Dev

如何使用打字稿编写节点模块?

来自分类Dev

打字稿:从内部模块创建外部模块

来自分类Dev

使用AMD模块和打字稿加载Bootstrap

来自分类Dev

如何为打字稿中的类使用单独的文件?

来自分类Dev

如何创建“外部模块”打字稿定义文件以包含在npm包中?

来自分类Dev

打字稿创建模块

来自分类Dev

导出打字稿中的模块

来自分类Dev

如何使用打字稿中的列表标题创建数组?

来自分类Dev

如何在打字稿中创建新对象时进行投射?

来自分类Dev

如何使用React从打字稿中的对象创建HTML元素

来自分类Dev

如何从打字稿中的类中创建排除实例方法的类型?

来自分类Dev

使用打字稿获取字段类型而不创建实例

来自分类Dev

如何使用打字稿编写节点模块?

来自分类Dev

我应该使用new来在打字稿类中创建对象属性吗?

来自分类Dev

打字稿:使用AMD时如何关闭环境声明

来自分类Dev

打字稿:从内部模块创建外部模块

来自分类Dev

如何为打字稿中的类使用单独的文件?

来自分类Dev

如何在带有打字稿的类中创建枚举属性?

来自分类Dev

打字稿创建通用对象

来自分类Dev

实例化打字稿类

来自分类Dev

无法在打字稿中创建对象

来自分类Dev

在 Angular2 打字稿类中找不到模块

来自分类Dev

使用类的方法在打字稿中创建联合类型

来自分类Dev

打字稿 - 请在这里创建类实例?

Related 相关文章

热门标签

归档