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在输出中包含.d.ts导入?_Javascript_Typescript_Webpack_Typescript Typings - Fatal编程技术网

Javascript 如何防止TypeScript在输出中包含.d.ts导入?

Javascript 如何防止TypeScript在输出中包含.d.ts导入?,javascript,typescript,webpack,typescript-typings,Javascript,Typescript,Webpack,Typescript Typings,我已使用以下命令将.d.ts文件(即库的类型定义)安装为外部(非全局)typings模块: typings install p2=github:schteppe/p2.js/index.d.ts#9d56924 然后在我的TypeScript代码中使用它,如下所示: import * as p2 from 'p2'; 此导入将显示在已编译的javascript中: var p2 = require('p2'); 但是,显然,我不需要它,因为p2外部模块只包含类型定义,而不包含实际代码。然后

我已使用以下命令将.d.ts文件(即库的类型定义)安装为外部(非全局)
typings
模块:

typings install p2=github:schteppe/p2.js/index.d.ts#9d56924
然后在我的TypeScript代码中使用它,如下所示:

import * as p2 from 'p2';
此导入将显示在已编译的javascript中:

var p2 = require('p2');
但是,显然,我不需要它,因为
p2
外部模块只包含类型定义,而不包含实际代码。然后,我在TypeScript的输出上运行
webpack
,它无法使用

...Module not found: Error: Cannot resolve module 'p2'...

使用此外部模块的正确方法是什么,以便TypeScript和my IDE(Atom with Atom TypeScript插件)可以看到定义,但不会在TypeScript输出中包含任何
require
call,因为它会包含在TypeScript输出中?

在tsconfig.json中设置
compileOnSave:false


请参见

网页支持配置外部

在您的情况下,这将是
externals:[{“p2”:true}]

有关处理外部信息的更多信息,请参见网页文档: webpack.github.io/docs/configuration.html#externals


编辑:使用注释中的新信息更新,但这只是禁用TypeScript编译。在我决定使用一个非全局的typedef模块之前,通过两步构建过程(TypeScript->JavaScript,然后是JavaScript->将JavaScript分别与TypeScript和webpack捆绑在一起),一切都很顺利。使用ts loader是让它工作的唯一方法吗?整个问题是它是非全局(外部)类型,因此必须导入。啊,我明白了,webpack支持配置外部。在您的情况下,这将是
externals:[{“p2”:true}]
。让我知道它是否有效,然后我会更新原始答案。谢谢,这似乎有效。仍然感觉有点不对劲(typescript的输出中不包含声明,没有理由包含对只包含声明的模块的引用),但我理解为什么它是这样工作的。如果没有其他(更清洁的)解决方案,我将接受这个答案。