为什么在“d.ts”文件中使用“declare”一词

Max*_*kyi 8 typescript

每当tsc生成d.ts文件时,它都会包含declare单词,如下所示:

export declare class Moment {
    name: string;
}
Run Code Online (Sandbox Code Playgroud)

现在,declarein tsfiles 用于表示tscjs应该为带有declare. 所以它在ts文件中是有意义的。然而,无论如何,nojs都是从d.ts文件生成的,为什么要在那里使用这个词呢?

我尝试declare从上面的代码中删除单词:

export class Moment {
    name: string;
}
Run Code Online (Sandbox Code Playgroud)

效果是一样的。

我在这里找到了以下内容:

如果文件的扩展名为 .d.ts,则每个根级别定义都必须在其前面添加声明关键字。这有助于让作者清楚地知道 TypeScript 不会发出任何代码。作者需要确保声明的项在运行时存在。

declare那么这是in文件的唯一目的吗d.ts

请注意,这与这个问题不是同一个问题,因为我的问题是关于declared.ts文件中使用,而不是ts文件。

TSV*_*TSV 0

“.d.ts”文件和“.ts”都由同一个转译器处理。并且键盘的含义是一样的。根据文档文章

declare 关键字用于环境声明,您可以在环境声明中定义可能不是源自 TypeScript 文件的变量。

declare关键字使转译器不会生成任何真正的 JavaScript 代码,并允许在其他 TypeScript 文件中使用“声明的”对象。

  • 这是没有意义的,因为`.d.ts`文件*永远不会*生成任何JS代码——它是一个“类型”文件,仅用于通知编译器有关类型的形状。`.d.ts` 不能包含实现,因此 `declare` 在那里是多余的。 (3认同)