打字稿声明文件-“导出声明”和“导出”之间的区别

Sha*_*awn 5 typescript

我正在学习打字稿。在研究某些源文件时,我发现声明文件中有时存在export declare ...,有时只是存在。export ....d.ts

经过一些测试,在我看来它们是等效的。没有declare就没有区别。

我知道declare没有需要export。例如,declare var test:any;

但它是真实的export declareexport等价?

附带的问题:和declare完全不需要吗?在如果我把刚才的文件,则是随处可见没有。这是为什么?interfacetype.d.tsinterface test{}testdeclare

Jos*_*oud 0

declare标志告诉 TypeScript 类或接口的形状正在其他地方定义,而不是在这里;例如,可用于由 CDN 提供服务并由<script>index.html 文件中的标签导入的类/接口/函数(当然还有其他内容)。

如果您要创建在应用程序中使用的类或接口,则不需要该declare标志。

例子:

// my-cool-object.ts

export interface MyCoolObject {
// stuff in my object
}
Run Code Online (Sandbox Code Playgroud)
// my-cool-project.ts

import { MyCoolObject } from './my-cool-object';  // or wherever the interface definition file is located;

const myObject: MyCoolObject;

// ...more code goes here
Run Code Online (Sandbox Code Playgroud)