我有一个第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}}文件。
我该怎么做?
答案 0 :(得分:0)
我找到了一种解决方法,但是我不确定这是否是一个错误,所以宁愿有一个完整的答案。
typings/third.party.d.ts
文件包含一个export = ...
语句,没有该文件将无法与import
语句一起使用,但是这似乎阻止了它与/// <reference path=...
声明一起使用
/// <reference path=...
似乎不适用于任何包含显式默认模块定义的内容(尽管它可以包含export module
和export class
)。
即使文件明确为import
,看起来.d.ts
也被视为输出依赖项,我认为这可能是TS中的错误。