Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从不是模块的TypeScript文件中使用作为模块的@types? 背景:_Javascript_Typescript - Fatal编程技术网

Javascript 如何从不是模块的TypeScript文件中使用作为模块的@types? 背景:

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

我正在将一个大型的~3000内联
从一个网页转换成一个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
        }
    };

} );