gpt4 book ai didi

typescript - 混淆 : how to use es6 browser module withTypescript (without module bundler)

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:09 25 4
gpt4 key购买 nike

我想用 es6 模块组织我的 typescript 代码,并直接在浏览器中通过脚本 type="module"加载它们。我已经检查了支持 ( https://caniuse.com/#feat=es6-module ),它会起作用。我使用 chrome 版本 66。

我尝试过但没有成功(见下面的代码),而且我对正确使用策略感到困惑。

解决方案一:在app.ts文件中,是否应该导入外部模块,然后如何加载正确的js文件?

解决方案 2:在 app.ts 文件中,我应该直接导入 .js 代码但如何引用 .d.ts 文件以进行类型检查?

任何帮助将不胜感激。

============================================= ========================

这是我试过的代码

我的 index.html 文件

<!-- index.html -->
<!DOCTYPE html>
<html>

<head>
<title>Welcome</title>
</head>

<body>
<div id="app">
<img src="https://vuejs.org/images/logo.png" alt="Vue logo">
<h1>{{ msg }}</h1>
</div>

<script type="module" src="app.js"></script>
</body>

</html>

我的 app.ts 文件

//Solution 1
// import Vue from "vue"; // Uncaught TypeError: Failed to resolve module specifier "vue". Relative references must start with either "/", "./", or "../".

//Solution 2
import Vue from "./Vendors/vue.esm.browser.js"; // It works in the browser but i have lost the definition inside Typescript file

var app = new Vue({
el: '#app',
data: {
msg: 'hello :)!'
}
});

我的 tsconfig.json 文件

// tsconfig.json
{
"compilerOptions": {
"strict": true,
"target": "es6",
"module": "es6",
"moduleResolution": "node",
"allowJs": true
}
}

我的 package.json 文件

{
"name": "vuejsbrowseresmodule",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"vue": "^2.5.16"
}
}

最佳答案

经过几天的研究,我找到了答案。目前,不使用模块加载器就无法使用 typescript 。在 typescript 中有很多关于浏览器中的 native 加载器的讨论​​。

这里有更多信息=>

https://github.com/Microsoft/TypeScript/issues/16577 https://github.com/Microsoft/TypeScript/issues/13422

一个有趣的提案草案已经开始,可以在这里找到 =>

https://github.com/domenic/package-name-maps

关于typescript - 混淆 : how to use es6 browser module withTypescript (without module bundler),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50333892/

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