当前位置: 首页 > 网络应用技术

打字稿声明文件详细说明

时间:2023-03-07 02:46:23 网络应用技术

  语句文件是一个以.d.ts作为后缀的文件。开发人员在语句文件中写了一个类型语句。根据语句文件的内容检查了Typescript。文件名)

  为什么我需要声明文件?我们知道根据类型声明检查Typescript,但在某些情况下可能没有类型声明:

  如果没有类型的声明,则使用变量,调用函数,实例化类是不可能传递打字稿的类型。

  声明文件是针对这些情况的,开发人员在主机环境的语句/类型语句中编写了第三方模块的类型语句。

  另外,使用裸露的类型定义也可以导入声明文件。

  简而言之,声明文件有两种用途:

  对于第二个用法,该语句如何与相关模块关联?

  例如,如果有第三部分软件包名称“ foo”,则Typescript将根据其package.json类型和键入字段找到作为模块的语句文件找到的语句文件;TypeScript还将在目录中的目录中找到。如果您可以找到它,则可以作为foo模块语句文件找到。Typescript还将在我们的项目中找到.D.TS文件。如果遇到语句,则声明将用作FOO模块的语句。

  总结一下,打字稿在特定目录中读取指定的声明文件。

  声明文件中的代码不会出现在最终汇编结果中。汇编后,将输出的转换JavaScript代码输出到“ OutDir”选项指定的目录,并且.TS模块中使用的值的声明输出以输出“ dectrarationdir”指定的目录。

  编译后,.TS文件中的语句语句将被删除,例如

  将被编译为

  打字稿编译过程不仅将打字稿语法转换为ES6/ES5,而且还将代码中的.TS文件中使用的值类型输出到指定的语句文件。如果您需要实现库项目,那么此函数非常有用,因为使用库的项目可以直接使用这些语句文件,而无需为您的库编写语句文件。

  Typescript中的语句将创建以下三个实体之一:命名空间,类型或值。

  命名空间最终被编译为全局变量,因此我们还可以认为该语句的类型和值的类型和值也可以考虑到定义类型或声明值。

  我们注意到可以直接定义该类型,但是该值的说明需要由声明关键字使用。这是因为如果您不使用声明关键字,则该值的语句和初始化在一起,例如

  但是,汇编结果是删除所有语句语句并保留初始化部分,并且语句文件中的内容仅播放语句,因此需要通过声明确定。这只是一个语句语句,可以在编译时直接删除。

  Typescript还限制了必须通过声明确定值的声明文件,否则将被视为初始化以报告错误。

  声明还允许出现在.ts文件中,但通常不做。.TS文件直接使用LET/CORS/FUNCTION/CLASS来声明和初始化变量。并且.TS文件还将在编译后删除声明语句,因此不需要声明语句。

  请注意,同名的多个变量是冲突

  除了使用声明声明值之外,声明还可以用于声明模块和全局插件。在特定情况下,这两种用法用于对第三方软件包发表声明。

  它用于制作类型语句的第三方模型,例如第三方袋,没有类型的声明。我们可以在我们的项目中实现一个语句文件,以允许Typescript标识模块类型:

  然后我们可以使用它:

  除了提供模块语句之外,它还可以用于实现模块插件的语句。将在后续部分中引入介绍。

  它用于声明第三方软件包,该软件包扩大了整体情况,并稍后引入。

  文件语句的模块类似于.ts模块的模块,该模块在某些详细信息中略有不同。.TS导出模块(Typescript将根据导出的模块判断类型),并且D.TS导出了类型和声明的价值。

  声明文件可以导出类型或值的说明

  声明文件可以引入其他语句文件,甚至可以介绍其他.TS文件(因为.ts文件也可能导出类型)

  如果声明文件未启发,则可以由全局访问默认值

  如果您使用模块导出语法(ESM/commjs/umd),则未对全局进行分析(当然,仍然可以在全球访问UMD)。

  注意:UMD软件包语法只能出现在语句文件中。

  语句中的三个基因指令用于控制编译过程。

  这三个倾斜说明只能放置在包含它的文件的顶部。

  如果指定了指定的汇编选项,则将忽略预编辑过程。

  参考文献指令用于显示该陈述的依赖性。

  用于告诉其他依赖编译器的其他语句文件。准备编译器时,将添加路径指定的语句文件。路径相对于文件本身。引用不存在或引用本身,它将报告错误。

  它用于告诉编译器IT依赖性。如果@Types中的某些语句文件取决于您的项目,那么在编译后,该指令将自动添加到语句文件输出文件中以说明您项目中的语句文件取决于您的项目。在@Typesessence中的相关语句文件中

  ,,,,

  这涉及两个汇编选项。设置此编译选项后,编译器将忽略默认库。安装打字稿时会自动介绍默认库。该文件包含JavaScript(例如窗口)和DOM.Environmental声明中的各种常见。排除默认的lib.d.ts文件后,您可以编译上下文并包含类似于上下文中命名相似性的相似名称。对于文件,Typescript将提取文件以进行type Check。

  另一个编译选项是,此选项将使编译器忽略包含指令的语句文件。您会注意到将在默认库的顶部有此三个 - 坡度指令,因此,如果采用了编译选项,则默认库,也将被忽略。

  与AMD模块相关的指令用于控制包装到AMD模块的汇编过程

  该指令用于告诉编译器为模块名称中的模块(默认值是匿名)

  汇编结果是

  在这里,我们称我们的项目代码为“内部项目”,引入了第三党模块,包括介绍NPM和脚本,称为“外部模块”。

  在您自己的项目中,为您自己的模块编写语句文件,例如多个模块的类型,您可以编写一个语句文件。这种情况通常是不必要的,通常是.ts文件导出语句,其他模块报价声明。

  将语句文件写入第三方软件包被分为内部项目,以将语句文件写入第三方软件包,并将语句文件写入外部模块中的外部模块。

  将语句文件写入内部项目中的第三部分软件包:如果第三部分软件包没有TS语句文件,以确保第三党派包可以通过类型检查并使用第三个 -派对软件包安全,您需要在内部项目中写第一篇。

  将语句文件写入外部模块中的外部模块:如果您是第三部分库的作者,无论您是使用Typescript开发库,都应提供一个语句文件来使用由Typesscriptyou开发的项目,需要编写您的语句文件。

  在这两种情况下,声明文件的语法是相似的,只有语法和文档文件之间的差异:

  几种类型可以根据第三方软件包的类型分为几种类型

  我们知道,如果模块导出语法,则该语句的默认语句是全局。

  或者

  使用:

  如果修改了全局模块(第三方软件包是此全局模块的插头 - ),则该第三部分软件包语句的语句基于全局模块的说明。

  如果全局模块使用命名空间声明

  根据命名空间声明的原则,可以这样声明插件模块

  如果全局模块使用全局变量语句

  根据接口语句的说明,可以像这样声明插头-in模块

  以上全局模块的插头模块的语句可以应用于以下方案:

  如果它是插件模块的作者,我希望在项目中引用全局模块,并将扩展类型输出到其他项目的语句文件中。

  请注意,也可以在语句文件中写入,但要导出语句到尾部或其他模块,否则将报告错误。此外,如果您在语句文件中写入,则不会输出到语句中汇编后文件。

  窗口的类型是在默认库中声明,如果要扩展窗口变量(例如某些混合环境),则可以像这样实现它

  或者

  将语句文件写入第三方的ESM或COMPORJS模块,并使用ESM导出或CommonJS模块语法导出,无论哪种模块表单是第三派对软件包。

  查看下面的示例

  上述语句文件放置在中间或字段中指定的字段中。

  如果您在自己的项目中声明它,则应使用实施

  可以根据CommonJS语句添加UMD模块。

  看看下面的ESM的示例

  您可以通过导入导入

  您也可以通过全局访问访问

  以下是commonjs的示例

  您可以通过导入介绍访问

  也可以访问全球

  如上所述,声明模块不仅可以用来声明第三派对模块类型,而且还可以用来将插件的类型声明为第三党模块。

  例如,插件的语句作为插件-in,这是语句

  原始:https://juejin.cn/post/7097429475708633095