停止TS,包括在输出中导入定义文件

时间:2019-01-09 15:28:29

标签: javascript typescript es6-modules

我有一个第3方库,该库动态加载了验证密钥。

这是一个非常复杂的API,所以我想在TypeScript代码中输入类型定义。

在我的.tsconfig中,我使用的是"target": "esnext""module": "esnext"

在类型定义为typings/third.party.d.ts的情况下,我在TS代码中输入了此代码:

import * as third_party from './typings/third.party';

问题是最终出现在JS输出中-我不希望这样,并且当源文件是.d.ts时也不应该这样。

我尝试添加扩展名:

import * as third_party from './typings/third.party.d.ts';

但这会使TS错误代码TS2691:“导入路径不能以'.d.ts'扩展名结尾。请考虑导入'./typings/third.party'。”

我尝试添加:

/// <reference path="typings/third.party.d.ts" />

改为位于文件顶部,但根本找不到。

我知道我可以使用各种捆绑器解决这个问题,但是我不希望依赖-我希望TS编译器从.d.ts文件强制执行定义,但不要尝试将其包含在导出{{ 1}}文件。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我找到了一种解决方法,但是我不确定这是否是一个错误,所以宁愿有一个完整的答案。

typings/third.party.d.ts文件包含一个export = ...语句,没有该文件将无法与import语句一起使用,但是这似乎阻止了它与/// <reference path=...声明一起使用

/// <reference path=...似乎不适用于任何包含显式默认模块定义的内容(尽管它可以包含export moduleexport class)。

即使文件明确为import,看起来.d.ts也被视为输出依赖项,我认为这可能是TS中的错误。