+-
SAP Spartacus 里 对 isPlatformBrowser API 的使用
首页 专栏 typescript 文章详情
0

SAP Spartacus 里 对 isPlatformBrowser API 的使用

JerryWang_汪子熙 发布于 4 月 17 日

window-ref.ts 里的 isBrowser API,封装的是 Angular 标准 API,isPlatformBrowser:

来自 @angular/common:

isBrowser(): boolean { // TODO(#11133): Remove condition when platformId will be always provided return this.platformId ? isPlatformBrowser(this.platformId) : typeof window !== 'undefined'; }

这是 @angular/common 里标准的 api:

https://angular.io/api/common...

然后单击进去之后,看不到具体的实现代码:

@publicApi

export declare function, 其用法解释:

Declare vs. var

var creates a new variable. declare is used to tell TypeScript that the variable has been created elsewhere. If you use declare, nothing is added to the JavaScript that is generated - it is simply a hint to the compiler.

For example, if you use an external script that defines var externalModule, you would use declare var externalModule to hint to the TypeScript compiler that externalModule has already been set up

export declare class Action{ ... }

The class's real implementation is probably in somewhere else - maybe a .js file.

declare 提示了 Action 的实际实现一定在另一个位置,很可能是某个 .js 文件里。

TypeScript 帮助文档里对 declare 关键字的解释:

The TypeScript declare keyword is used to declare variables that may not have originated from a TypeScript file.

TypeScript 的 declare 关键字,用于声明一个变量,其原始定义可能并不是来自一个 TypeScript 文件。

For example, lets imagine that we have a library called myLibrary that doesn’t have a TypeScript declaration file and have a namespace called myLibrary in the global namespace. If you want to use that library in your TypeScript code, you can use the following code:

declare var myLibrary;

The type that the TypeScript runtime will give to myLibrary variable is the any type. The problem here is that you won’t have Intellisense for that variable in design time but you will be able to use the library in your code.

Another option to have the same behavior without using the declare keyword is just using a variable with the any type:

var myLibrary: any;
Both of the code examples will result in the same JavaScript output but the declare example is more readable and expresses an ambient declaration.

报错:uncaught referenceError: myLibrary is not defined


更多Jerry的原创文章,尽在:"汪子熙":

sap typescript angular saprfc angularjs
阅读 56 发布于 4 月 17 日
举报
收藏
分享
本作品系原创, 采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
Jerry Wang的SAP技术专栏
SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使
关注专栏
avatar
JerryWang_汪子熙

Jerry 2007年从电子科技大学计算机专业硕士毕业后进入SAP成都研究院工作至今, SAP社区导师,SAP中国技术大使。

632 声望
90 粉丝
关注作者
0 条评论
得票数 最新
提交评论
avatar
JerryWang_汪子熙

Jerry 2007年从电子科技大学计算机专业硕士毕业后进入SAP成都研究院工作至今, SAP社区导师,SAP中国技术大使。

632 声望
90 粉丝
关注作者
宣传栏
目录

window-ref.ts 里的 isBrowser API,封装的是 Angular 标准 API,isPlatformBrowser:

来自 @angular/common:

isBrowser(): boolean { // TODO(#11133): Remove condition when platformId will be always provided return this.platformId ? isPlatformBrowser(this.platformId) : typeof window !== 'undefined'; }

这是 @angular/common 里标准的 api:

https://angular.io/api/common...

然后单击进去之后,看不到具体的实现代码:

@publicApi

export declare function, 其用法解释:

Declare vs. var

var creates a new variable. declare is used to tell TypeScript that the variable has been created elsewhere. If you use declare, nothing is added to the JavaScript that is generated - it is simply a hint to the compiler.

For example, if you use an external script that defines var externalModule, you would use declare var externalModule to hint to the TypeScript compiler that externalModule has already been set up

export declare class Action{ ... }

The class's real implementation is probably in somewhere else - maybe a .js file.

declare 提示了 Action 的实际实现一定在另一个位置,很可能是某个 .js 文件里。

TypeScript 帮助文档里对 declare 关键字的解释:

The TypeScript declare keyword is used to declare variables that may not have originated from a TypeScript file.

TypeScript 的 declare 关键字,用于声明一个变量,其原始定义可能并不是来自一个 TypeScript 文件。

For example, lets imagine that we have a library called myLibrary that doesn’t have a TypeScript declaration file and have a namespace called myLibrary in the global namespace. If you want to use that library in your TypeScript code, you can use the following code:

declare var myLibrary;

The type that the TypeScript runtime will give to myLibrary variable is the any type. The problem here is that you won’t have Intellisense for that variable in design time but you will be able to use the library in your code.

Another option to have the same behavior without using the declare keyword is just using a variable with the any type:

var myLibrary: any;
Both of the code examples will result in the same JavaScript output but the declare example is more readable and expresses an ambient declaration.

报错:uncaught referenceError: myLibrary is not defined


更多Jerry的原创文章,尽在:"汪子熙":