如何在纯javascript中访问typescript模块?

如何在纯javascript中访问typescript模块?,typescript,Typescript,可能是因为我不熟悉typescript,所以做得不对,但我已经创建了一个模块,我整天都在看教程,让我创建C#中的类,我这样做: export default class MyClass { } 现在,我的理解是,要在typescript中创建这个类的新实例,我将执行以下操作: import t from './MyClass'; var something = new t(); 但是,在我的例子中,我的文件是js文件,而不是ts文件,因为我需要在html页面的底部执行此操作 但是我不知道怎

可能是因为我不熟悉typescript,所以做得不对,但我已经创建了一个模块,我整天都在看教程,让我创建C#中的类,我这样做:

export default class MyClass {

}
现在,我的理解是,要在typescript中创建这个类的新实例,我将执行以下操作:

import t from './MyClass';
var something = new t();
但是,在我的例子中,我的文件是js文件,而不是ts文件,因为我需要在html页面的底部执行此操作

但是我不知道怎么做,因为执行
newmyclass()
会给我一个未定义的错误

尽管我看了好几篇教程,但我仍在为导入和导出的概念而挣扎,所以我可能会做错事情,但我只想创建一个干净的项目,这让mt相信这就是实现这一点的方法

我还应该补充一点,我必须像这样添加我的模块:

export default class MyClass {

}

我以前从未使用过
type=“module”
,没有它就无法工作,我在一篇随机的SO文章中发现了它


有什么建议吗?

我不知道全局脚本如何访问模块。相反,您需要编写一个模块,将您希望在全局脚本中使用的所有内容复制到全局变量(即窗口的属性)中。如果您愿意(为了简单起见,我会这样做),您可以直接在
MyClass.ts
中或在单独的模块中执行此操作

第二个问题是,为了让全局脚本在模块之后运行,您需要使用以下技术之一延迟全局脚本

工作示例:

index.html:

<html>
<body>
<script type="module" src="./MyClass.js"></script>
<script defer src="global.js"></script>
</body>
</html>
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyClass());
</script>
</body>
</html>
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyNamespace.MyClass());
</script>
</body>
</html>
简单全局类型脚本示例 MyClass.ts:

export default class MyClass {

}
(<any>window).MyClass = MyClass;
class MyClass {}
namespace MyNamespace {
  export class MyClass {}
}
index.html:

<html>
<body>
<script type="module" src="./MyClass.js"></script>
<script defer src="global.js"></script>
</body>
</html>
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyClass());
</script>
</body>
</html>
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyNamespace.MyClass());
</script>
</body>
</html>
index.html:

<html>
<body>
<script type="module" src="./MyClass.js"></script>
<script defer src="global.js"></script>
</body>
</html>
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyClass());
</script>
</body>
</html>
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyNamespace.MyClass());
</script>
</body>
</html>

log(新的MyNamespace.MyClass());

这太复杂了,无法在TS文件中创建一个可重用类并在我的代码中使用它,而不将其自身添加到全局命名空间中。一定是我做错了什么。我只想在我的html页面上执行
new MyClass()
并使用它。在这一行
define([“require”,“exports”],function(require,exports)上面的代码中,我得到了一个“define is not defined”错误{
如果要加载带有
的TypeScript,则需要将
模块
编译器选项设置为
es6
,以保留es6模块,而不是将其转换为AMD模块(除非使用AMD加载程序,否则将失败)。Re“太复杂了”:您可以使用TypeScript而不使用任何模块。只需删除
导出默认值
,您的TypeScript文件将是一个全局脚本,它将全局定义
MyClass
。嗯,尝试使用TypeScript来正确执行操作,尽可能像C#一样,使用漂亮的类和单独的文件等。我尝试了一个命名空间而不是module,但仍然看不到我的类。我尝试将其添加到窗口对象,但仍然没有任何结果。我不确定现在该怎么做,正在努力学习typescript,但如果在过去2天中尝试了大约10个小时的不同操作后,我甚至无法完成类似的简单操作…我已经完成了所有关于它的pluralsight教程,但是关于这一切是如何联系在一起的信息太少了:s