在“.d.ts”文件中使用“导出声明函数”和“导出函数”有啥区别

Posted

技术标签:

【中文标题】在“.d.ts”文件中使用“导出声明函数”和“导出函数”有啥区别【英文标题】:What's the difference between using 'export declare function' and 'export function' in a '.d.ts' file在“.d.ts”文件中使用“导出声明函数”和“导出函数”有什么区别 【发布时间】:2020-10-10 04:13:43 【问题描述】:

我在打字稿声明文件中看到人们这样写减速:

export function useTheme(): ITheme;

但我的印象是 declare 关键字对于为其他地方定义的函数编写类型减速是必要的?

如果这是有效的,export declare function useTheme(): ITheme; 也是有效的,那么有什么理由选择其中一个吗?

【问题讨论】:

【参考方案1】:

简单来说,如果你想在代码中创建一些声明,就像你知道某个函数在全局范围内存在但编译器不知道 - 你使用 declare 关键字。但是定义文件有点不同。由于这实际上是定义文件,因此除了声明之外别无其他,因此无论您是否使用 declare 关键字,这些文件都将所有实体视为声明。使用declare 关键字只是一种约定,显然是推荐的,因为在这种情况下我们不应该根据扩展名指定内容类型。这里 TypeScript 编译器知道 d.ts 是一个声明文件,但其他一些编译器可能不知道

【讨论】:

以上是关于在“.d.ts”文件中使用“导出声明函数”和“导出函数”有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

导出原始 .ts 文件而不是 .d.ts 文件作为模块类型声明的后果

使用复杂的 .d.ts 文件 (chrome-app.d.ts)

typeScript声明文件的一个注意点:不能使用导入导出语法

Typescript、index.d.ts 和 webpack:找不到模块错误

如何在 React 和 TypeScript 项目中使用 types.d.ts 文件

使用 TypeScript 声明 (*.d.ts) 和接口的正确方法?