如何在不创建无效导入的情况下引用外部库类型

时间:2018-06-20 05:42:33

标签: reinforced-typings

使用选项UseModules = true, DiscardNamespacesWhenUsingModules = true时,我需要删除ReinforcedTypings生成的import语句

所以我需要我的TypeScript看起来像这样

export interface IMyTreeNode extends kendo.data.Node { ... }

其中 kendo.data.Node 是第三方js / TypeScript库-但可以在我的项目中解决。

过去,我可以通过以下方式使用ReinforcedTypings来做到这一点:相当巧妙地使用可用的选项,因为kendo.data.Node仅在TypeScript中,而不在C#中。

[TsInterface(Name = "kendo.data.Node", AutoI = false)]
interface KendoDataNode { }

[TsInterface]
public class MyTreeNode: KendoDataNode { ... }

这很好。并产生此输出

export interface IMyTreeNode extends kendo.data.Node { ... }

我现在的问题是我必须更改配置才能使用这样的模块:

TsGlobal(UseModules = true, DiscardNamespacesWhenUsingModules = true)

现在使用此配置,ReinforcedTypings在TypeScript输出中生成了额外的一行:它不会编译。而且我找不到摆脱它的方法。

import { kendo.data.Node } from '../../kendo.data.Node';
export interface IMyTreeNode extends kendo.data.Node { ... }

我只需要删除import语句或制作一个有效的语句。没有它,它就完美地工作。

我愿意以任何方式使用Fluent配置-但我还看不到任何实现此目的的方式。

1 个答案:

答案 0 :(得分:1)

您能说出必须的样子吗?

基本上,您可以将[TsImport]上的IMyTreeNodeImportTarget = "*"一起使用。它必须防止RT生成精确的导入。

顺便说一句,最好使用[TsInterface(Name = "Node", AutoI = false, Namespace="kendo.data")]而不是将namespece包含在类型名中。