typescript - 如何在纯 javascript 中访问 typescript 模块?
问题描述
可能做错了,因为我是打字稿的新手,但我创建了一个模块,我认为从整天看教程,让我创建 C# 中的一个类,我这样做是这样的:
export default class MyClass {
}
现在,我的理解是,要在 typescript 中创建此类的新实例,我会这样做:
import t from './MyClass';
var something = new t();
但是,在我的情况下,我的文件是 js 文件,而不是 ts 文件,因为我需要在 html 页面的底部进行。
但是我不知道怎么做,因为这样做new Myclass()
给了我一个未定义的错误。
尽管看了几个教程,但我在导入和导出的概念上苦苦挣扎,所以我可能做错了,但我只想创建一个干净的项目,它让 mt 相信这是做到这一点的方法。
我还应该补充一点,我必须像这样添加我的模块:
<script type="module" src="~/Scripts/Proj/MyClass.js"></script>
我以前从未使用type="module"
过,没有它就无法工作,我在随机的 SO 帖子上找到了它。
有什么建议吗?
解决方案
我不知道全局脚本访问模块的任何方式。相反,您需要编写一个模块,将您希望在全局脚本中使用的所有内容复制到全局变量(即窗口的属性)中。MyClass.ts
如果您愿意(为了简单起见,我会这样做),您可以直接在其中执行此操作,也可以在单独的模块中执行此操作。
第二个问题是模块总是被延迟的,所以为了让你的全局脚本在模块之后运行,你需要使用这个问题中的一种技术来延迟你的全局脚本。
工作示例:
索引.html:
<html>
<body>
<script type="module" src="./MyClass.js"></script>
<script defer src="global.js"></script>
</body>
</html>
MyClass.ts:
export default class MyClass {
}
(<any>window).MyClass = MyClass;
全球.js:
console.log(new MyClass());
简单的全局 TypeScript 脚本示例
MyClass.ts:
class MyClass {}
索引.html:
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyClass());
</script>
</body>
</html>
带有 TypeScript 命名空间的示例
MyClass.ts:
namespace MyNamespace {
export class MyClass {}
}
索引.html:
<html>
<body>
<script src="MyClass.js"></script>
<script>
console.log(new MyNamespace.MyClass());
</script>
</body>
</html>
推荐阅读
- rust - 为什么 Rust 需要包和工作空间?
- python - 如何根据预先确定的规则计算列的值,并使用该计数创建新列?
- javascript - discord.js 删除机器人发送的嵌入
- python - 如何让 Beautiful Soup 更像是一个网站?
- python-3.x - 从核密度估计(sklearn)中获取核特征
- c# - 如何在我的 WPF 应用程序和第二个窗口之间切换焦点
- c++ - 局部变量名冲突
- python - 计算散点图的正弦回归
- c - 在 C for OpenMP 中将嵌套的 for 循环重写为没有冗余的单个 for 循环
- docker - 即使使用 --with-registry-auth,Docker 堆栈部署也不会从私有 resgistry 中提取图像