Javascript 如何从不是模块的TypeScript文件中使用作为模块的@types? 背景:
我正在将一个大型的~3000内联Javascript 如何从不是模块的TypeScript文件中使用作为模块的@types? 背景:,javascript,typescript,Javascript,Typescript,我正在将一个大型的~3000内联从一个网页转换成一个TypeScript文件(PageScripts.ts),该文件将被网页用作 该脚本使用SortableJS,它具有。GitHub上提供了*.d.ts文件,如下所示: 原文: 下面是HTML页面中导致问题的原始JavaScript部分: <script type="text/javascript"> window.addEventListener( 'DOMContentLoaded', function() { var
从一个网页转换成一个TypeScript文件(PageScripts.ts
),该文件将被网页用作
该脚本使用SortableJS,它具有。GitHub上提供了*.d.ts
文件,如下所示:
原文:
下面是HTML页面中导致问题的原始JavaScript部分:
<script type="text/javascript">
window.addEventListener( 'DOMContentLoaded', function() {
var sortableOptions = {
dataIdAttr: 'my-id',
onEnd: function( ev ) {
// do stuff
}
};
} );
</script>
打字稿:
我在PageScripts.ts
中将上面的脚本片段转换为这个类型脚本:
import Sortable = require("sortablejs");
// ...
window.addEventListener( 'DOMContentLoaded', function() {
var sortableOptions = {
dataIdAttr: 'my-id',
onEnd: function( ev: Sortable.SortableEvent ) {
// do stuff
}
};
} );
这样编译时不会出现任何错误,但是因为TypeScript文件有一个import
语句,它会导致TypeScript将文件编译到自己的JavaScript模块中,这意味着网页无法直接使用它,因为TypeScript会将其添加到输出PageScripts.js
文件的开头:
Object.defineProperty(exports, "__esModule", { value: true });
…这会导致浏览器脚本错误,因为未定义导出
因此,我将其改为使用//
:
/// <reference types="sortablejs" />
// ...
window.addEventListener( 'DOMContentLoaded', function() {
var sortableOptions = {
dataIdAttr: 'my-id',
onEnd: function( ev: Sortable.SortableEvent ) { <--- "Cannot find namespace 'Sortable'."
// do stuff
}
};
} );
//
// ...
addEventListener('DOMContentLoaded',function(){
var sortableOptions={
dataIdAttr:“我的id”,
onEnd:function(ev:Sortable.SortableEvent){尝试将sortablejs
d.ts文件添加到includes
数组的tsconfig.json
文件中,它将使此库全局可用。您尝试过添加另一个具有适当设置的tsconfig文件吗?@AlekseyL。另一个tsconfig文件有何帮助?还有什么您指的是“适当的设置”吗?我使用TypeScript编译和生成全局脚本,以便在返回IE11的web浏览器中使用,因此我根本无法使用模块。我也无法在我的tsconfig.json中设置模块:“无”。这就是您要做的said@AlekseyL.设置模块:“无“
由于不相关的原因中断了我项目中的其他文件。这就是为什么您需要对此特定文件进行单独配置的原因
/// <reference types="sortablejs" />
// ...
window.addEventListener( 'DOMContentLoaded', function() {
var sortableOptions = {
dataIdAttr: 'my-id',
onEnd: function( ev: Sortable.SortableEvent ) { <--- "Cannot find namespace 'Sortable'."
// do stuff
}
};
} );