Javascript 什么时候在TypeScript中使用declare?

Javascript 什么时候在TypeScript中使用declare?,javascript,typescript,Javascript,Typescript,在TypeScript中,为什么有时需要使用declare来声明变量,而有时不需要使用declare来声明变量,同样的问题对于函数也是如此 举一个例子:我什么时候使用,为什么使用 declare var foo: number; 如果 至少在我看来,他们都声明了一个名为foo的number类型的变量。有什么区别吗?您从不使用declare来声明变量。您只需使用它让TypeScript知道变量存在,即使它没有在代码中声明,例如,因为它是在其他代码中声明的全局变量,或者因为您要将tsc的JavaS

在TypeScript中,为什么有时需要使用declare来声明变量,而有时不需要使用declare来声明变量,同样的问题对于函数也是如此

举一个例子:我什么时候使用,为什么使用

declare var foo: number;
如果

至少在我看来,他们都声明了一个名为foo的number类型的变量。有什么区别吗?

您从不使用declare来声明变量。您只需使用它让TypeScript知道变量存在,即使它没有在代码中声明,例如,因为它是在其他代码中声明的全局变量,或者因为您要将tsc的JavaScript输出与声明该变量的另一个文件相结合。或者换一种说法:它只为TypeScript编译器声明它,而不是为JavaScript运行时声明它

如果您使用游乐场编译声明变量foo:number;,它实际上没有为该声明输出任何内容

相反,让foo:number;或var foo:number;是一个变量声明

您从不使用declare来声明变量。您只需使用它让TypeScript知道变量存在,即使它没有在代码中声明,例如,因为它是在其他代码中声明的全局变量,或者因为您要将tsc的JavaScript输出与声明该变量的另一个文件相结合。或者换一种说法:它只为TypeScript编译器声明它,而不是为JavaScript运行时声明它

如果您使用游乐场编译声明变量foo:number;,它实际上没有为该声明输出任何内容


相反,让foo:number;或var foo:number;是一个变量声明

typescript中的declare关键字有助于告诉typescript编译器声明是在其他地方定义的,希望此链接有助于:

typescript中的declare关键字有助于告诉typescript编译器声明是在其他地方定义的,希望此链接有助于: 在TypeScript中,声明var foo:number;意思是:在代码中有一个叫做foo的数字。我知道你不会找回它的。但请相信我,表现得像你知道的那样。它是一种前向声明,就像在C/C++中看到的一样

例如:

假设您正在使用jQuery编写TS脚本。您可以在HTML页面的某个位置包含所有类似以下内容的JavaScript:

因此,不需要在TS脚本中包含jQuery,因为从TS脚本生成的JS将了解jQuery的所有内容。但是,TS transpiler会在代码中注释jQuery的标志性$a bunch。您不在TS代码中包含jQuery,因为不需要这样做,所以它对$一无所知。因此,它会向您报告许多错误,询问您在代码中随处可见的美元到底是什么。要解决所有与$相关的错误,您将编写declarevar$:jQuery;在TS脚本的开头。通过写入此信息,您可以将此信息告知TS transpiler:

代码中有一个名为$的变量,其类型为jQuery。我知道你不会找回它的。但假设它存在,请表现为存在导入aTSfile.ts;它完美地向您描述了一个描述,就像我之前在代码中使用它一样。相信我,当脚本被执行时,JavaScript会知道那美元到底是什么。别担心那件事-

在TypeScript中,声明var foo:number;意思是:在代码中有一个叫做foo的数字。我知道你不会找回它的。但请相信我,表现得像你知道的那样。它是一种前向声明,就像在C/C++中看到的一样

例如:

假设您正在使用jQuery编写TS脚本。您可以在HTML页面的某个位置包含所有类似以下内容的JavaScript:

因此,不需要在TS脚本中包含jQuery,因为从TS脚本生成的JS将了解jQuery的所有内容。但是,TS transpiler会在代码中注释jQuery的标志性$a bunch。您不在TS代码中包含jQuery,因为不需要这样做,所以它对$一无所知。因此,它会向您报告许多错误,询问您在代码中随处可见的美元到底是什么。要解决所有与$相关的错误,您将编写declarevar$:jQuery;在TS脚本的开头。通过写入此信息,您可以将此信息告知TS transpiler:

代码中有一个名为$的变量,其类型为jQuery。我知道你不会找回它的。但假设它存在,请表现为存在导入aTSfile.ts;它完美地向您描述了一个描述,就像我之前在代码中使用它一样。相信我,当脚本被执行时,JavaScript会知道那美元到底是什么。别担心那件事-

可能的重复可能的重复
let foo: number;