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
Typescript 如何在接口声明文件(d.ts)中导入枚举_Typescript_Import_Enums - Fatal编程技术网

Typescript 如何在接口声明文件(d.ts)中导入枚举

Typescript 如何在接口声明文件(d.ts)中导入枚举,typescript,import,enums,Typescript,Import,Enums,我想用一个需要传递枚举的方法扩展string。如何将该枚举导入声明文件 CapitalizationStyle.tsx: export enum CapitalizationStyle { None = 0, Lowercase = 1, Word = 2 } StringExtensions.d.ts: import { CapitalizationStyle } from "Utils/CapitalizationStyle"; //This line breaks

我想用一个需要传递枚举的方法扩展
string
。如何将该枚举导入声明文件

CapitalizationStyle.tsx:

export enum CapitalizationStyle {
    None = 0,
    Lowercase = 1,
    Word = 2
}
StringExtensions.d.ts:

import { CapitalizationStyle } from "Utils/CapitalizationStyle"; //This line breaks everything.

declare interface String {
    applyCapitalizationStyle(this: string, style: CapitalizationStyle): string;
}
导入会破坏接口声明,就像声明不再存在一样。添加导入后,String类的所有扩展实现都将失效:

StringExtensions.tsx:

最小可复制示例项目:

由于您没有来自该模块的默认导出,因此需要将其包装在
{}
中:

import { CapitalizationStyle } from "Utils/CapitalizationStyle";

尝试用花括号包装,如下所示:

import {CapitalizationStyle} from "Utils/CapitalizationStyle";

由于您没有默认导出自定义枚举。

您能更准确地解释“破坏一切”吗?您是否有TSLint错误?是不是因为“TS1192:没有默认导出”?我在原来的帖子中添加了更多的细节来澄清这一点。这个导入会破坏整个文件,比如如果没有任何声明(StringExtensions.d.ts)存在,则会使所有实现无效(StringExtension.tsx)。看起来你比我快10秒!好极了,+1!谢谢,但这不是问题所在。我在我原来的帖子中添加了更多的细节。问题不在于导入本身,而是它完全破坏了声明。@sixtstorm1感谢您添加了详细信息。你能吗?我曾试着做一个弹跳器,但在摆弄之后,却找不到如何使它工作。我在我的原始帖子中添加了一个链接,指向一个最小的可复制示例。生成将失败,因为类型“String”上不存在属性“applyCapitalizationStyle”。从d.ts中删除导入(并从方法签名中删除枚举),它将正确构建;log(str1.applyCapitalizationStyle(CapitalizationStyle.Word))//输出“John Doe”