是否有理由在类型和接口前使用 declare 关键字?
Is there ever a reason to use the declare keyword in front of types and interfaces?
我遇到过这样的代码:
declare type A = { ... };
declare interface B { ... }
通过搜索 declare
关键字(出于某种原因,none 的命中指向我 TypeScript 文档),当 [=] 中存在变量时使用 declare
25=] 并且你需要从 TypeScript 中引用它,所以你向编译器声明这个变量确实存在。
我发现所有使用此关键字的示例都像这样使用它:declare var a;
为什么我要在 type
或 interface
前使用它?根据我对declare
的理解,这样做是完全没有用的,但是编译器没有给我任何错误。
看来我刚刚找到原因了。
由此github issue:
declare
should be optional on type aliases and interfaces.
declare type
and declare interface
are identical to type
and interface
Since we already shipped type aliases this way, people have had to write declare type
a bunch of times. We could break them and say "Write type
, not declare type
", but that would be a massive break for no real reason.
总而言之,没有理由对类型和接口使用 declare
。
我遇到过这样的代码:
declare type A = { ... };
declare interface B { ... }
通过搜索 declare
关键字(出于某种原因,none 的命中指向我 TypeScript 文档),当 [=] 中存在变量时使用 declare
25=] 并且你需要从 TypeScript 中引用它,所以你向编译器声明这个变量确实存在。
我发现所有使用此关键字的示例都像这样使用它:declare var a;
为什么我要在 type
或 interface
前使用它?根据我对declare
的理解,这样做是完全没有用的,但是编译器没有给我任何错误。
看来我刚刚找到原因了。
由此github issue:
declare
should be optional on type aliases and interfaces.
declare type
anddeclare interface
are identical totype
andinterface
Since we already shipped type aliases this way, people have had to write
declare type
a bunch of times. We could break them and say "Writetype
, notdeclare type
", but that would be a massive break for no real reason.
总而言之,没有理由对类型和接口使用 declare
。