Typescript “导出声明类型Xyz”中的声明与“导出类型Xyz”中的声明是什么意思`

Typescript “导出声明类型Xyz”中的声明与“导出类型Xyz”中的声明是什么意思`,typescript,Typescript,在定义文件中,可以同时写入以下内容: export declare type Abc = string; export type Bcd = string; 这里的declare关键字没有任何作用,对吗?对declare关键字在需要说明执行时将有一个变量或常量时非常有用 示例:假设您想导入库someExternalLib,但它不在npm上(您必须通过脚本标记手动包含它)。您知道,它可以作为全局变量someExternalLib,通过函数fun1和fun2访问。问题是Typescript不知道-

在定义文件中,可以同时写入以下内容:

export declare type Abc = string;
export type Bcd = string;

这里的
declare
关键字没有任何作用,对吗?

declare
关键字在需要说明执行时将有一个变量或常量时非常有用


示例:假设您想导入库
someExternalLib
,但它不在npm上(您必须通过脚本标记手动包含它)。您知道,它可以作为全局变量
someExternalLib
,通过函数
fun1
fun2
访问。问题是Typescript不知道-这就是为什么您必须通过声明全局
someExternalLib
来帮助它:

declare const someExternalLib: { fun1: () => number, fun2: () => number }

在定义文件中,这通常是声明变量、常量、类和函数所必需的。对于类型和接口来说,它是多余的。

“您知道它可以作为全局变量访问”。如果它将作为全局可访问,为什么我们需要导出定义?@Nick我们需要导出修饰符,让编译器知道如何在模块世界中解析它