在本文中,我们将给您介绍关于AngularJS中的TypeScript拦截器的详细内容,并且为您解答angularjs拦截器的相关问题,此外,我们还将为您提供关于angular–由typescript
在本文中,我们将给您介绍关于AngularJS中的TypeScript拦截器的详细内容,并且为您解答angularjs 拦截器的相关问题,此外,我们还将为您提供关于angular – 由typescript导入的代码的Typescript类型?、angular – 类undecript的Typescript方法、angular2 – 如何部署Angular 2应用程序开发的Typescript到生产?、AngularJS 2 – 使用哪种语言? (Typescript,Javascript,Dart)的知识。
本文目录一览:- AngularJS中的TypeScript拦截器(angularjs 拦截器)
- angular – 由typescript导入的代码的Typescript类型?
- angular – 类undecript的Typescript方法
- angular2 – 如何部署Angular 2应用程序开发的Typescript到生产?
- AngularJS 2 – 使用哪种语言? (Typescript,Javascript,Dart)
AngularJS中的TypeScript拦截器(angularjs 拦截器)
我在使用TypeScript在AngularJS中设置请求拦截器时遇到问题
以下代码段有效,但无效版本已注释掉。无论我在构造函数中注入什么,局部变量在request
方法中都是未定义的。
module Services{ export class AuthInterceptor { public static Factory(TokenService: Services.ITokenService) { return new AuthInterceptor(TokenService); } constructor(private TokenService: Services.ITokenService) { this.request = (config: ng.IRequestConfig) => { config.headers = config.headers || {}; if(this.TokenService.IsAuthorised()) config.headers.Authorization = ''Bearer '' + this.TokenService.Token; return config; }; } public request: (config: ng.IRequestConfig)=>ng.IRequestConfig;/* THIS IS NOT WORKING public request(config) { // this.TokenService is undefined here as well as $window or $q which I tried to inject config.headers = config.headers || {}; if(this.TokenService.Token != "") config.headers.Authorization = ''Bearer '' + this.TokenService.Token; return config; }*/ }}angular.module("Services") .config(($httpProvider: ng.IHttpProvider)=> { $httpProvider.interceptors.push(Services.AuthInterceptor.Factory); });
答案1
小编典典是因为错误this
。解:
public request = (config) => { // this.TokenService is undefined here as well as $window or $q which I tried to inject config.headers = config.headers || {}; if(this.TokenService.Token != "") config.headers.Authorization = ''Bearer '' + this.TokenService.Token; return config; }
angular – 由typescript导入的代码的Typescript类型?
我正在开发一个Angular 7应用程序,我正在使用一些库,这些库是通过前端的脚本标签从其他来源(Stripe,recaptcha,googletags等)导入的.我将在这里使用Stripe作为示例,因为Stripe绝对要求客户端从Stripe.js导入前端库以实现PCI兼容性,因此从源服务器端不是一个选项.
我已经从DefinitelyTyped安装了Stripe的类型.如果我添加声明让Stripe:any;并且在组件中使用Stripe,它可以工作,但当然它不是类型安全的.如果我省略声明,VSCode发现类型很好,编辑器捕获类型错误,但它不会编译,(错误TS2304:找不到名称’Stripe’.)可能因为我没有Stripe的import语句.
有没有办法提示TypeScript它应该使用DefinitelyTyped中的类型来捕获类型错误,而不导入Stripe库本身?
编辑:我收回我所说的关于不认为这是Angular特定的内容.我现在认为这可能与角度编译过程有关.
解决方法
所以,我所做的是,我将Type DeFinition文件(通常是index.d.ts)复制到我的代码库中.
之后,您可以执行以下操作:
import {SomeType} from "sometype.d.ts" declare let ObjectImportedFromHTMLScriptTag: SomeType;
然后,您可以使用导入的对象而不会破坏类型安全性.
angular – 类undecript的Typescript方法
我想向Contact类添加一个属性或函数,它返回另外两个字段(firstname和lastname)的组合.
IContact接口的定义如下所示:
export interface IContact { firstname: string; lastname: string; }
Contact类看起来像这样:
export class Contact implements IContact { constructor( public firstname: string,public lastname: string ) { } public fullname(): string { return this.firstname + " " + this.lastname; } }
在我看来,我想输出Contact.fullname()的结果,但是我收到一个错误,即fullname不是一个函数.
我可以访问该类的所有其他属性.
====更新===
我会添加一些额外的代码来澄清一些东西.
当我在视图中输出fullname属性时,我尝试了contact.fullname(),但也联系了.fullname,结果什么都没有.
在我的组件中,试图弄清楚发生了什么我尝试将fullname输出到控制台,如下所示:console.log(“FULLNAME”contact.fullname());,但是在控制台中给出了以下消息:EXCEPTION _this .contact.fullname不是函数
=====更新答案========
正如Sakuto所说,联系人列表是由服务器收到的一些json创建的.通过调用它的构造函数完全创建一个新实例,我能够输出fullname属性.
谢谢Sakuto!
解决方法
使当前代码工作的唯一方法是创建一个新的Contact实例,而不是仅使用< Contact>转换它. yourObject;
解决方案是做这样的事情:
let contactsList: Contact[] = []; yourServiceReturn.ForEach(c => contactsList[] = new Contact(c.name,c.surname)); // You can Now call getFullName on the object stored on contactsList
angular2 – 如何部署Angular 2应用程序开发的Typescript到生产?
>在生产服务器中运行Angular 2应用程序的先决条件是什么?
>是否可能在IIS服务器中部署应用程序或需要节点服务器?
>在开发机器中使用节点编译文件后,我们需要将.js和.ts部署到生产环境吗?
<html> <head> <title>Hello Angular World</title> </head> <body> <div> <my-app>Loading...</my-app> </div> <script src="/js/myApp.bundle.min.js"></script> </body> </html>
这就是你需要的!
在将来,当HTTP / 2规范更常见时,可能不太需要捆绑基于模块的项目,但现在我认为需要捆绑。
没有对你的typescript文件的引用(因为它们已经在制作myApp.bundled.js的过程中被传递)。正如Zama所说,你可以在任何服务器上运行angular2(我使用IIS和工作正常)。
更新:自从Angular 2的最终版本,我已经切换到使用角度cli为建设生产。安装很容易(没有意大利面条的gulp任务),最后的包是超优化的(esp由于树摇晃)。我建议检查angular-cli设置,开发和构建您的ng2项目。
AngularJS 2 – 使用哪种语言? (Typescript,Javascript,Dart)
打字稿,Javascript和飞镖。
我只习惯了Javascript EcmaScript 5,我想知道这三个的强度和弱点是什么?
在问这个问题的时候,文档是更加发达的Typescript和漂亮的苗条其他人(甚至他们自己的语言Dart):
> Typescript:4教程,16开发人员指南,4测试指南
> Javascript:0教程,4开发人员指南,0测试指南
> Dart:0教程,14开发人员指南,0测试指南
我应该改变我的开发使用Javascript的习惯,并遵循Angular 2使用Typescript建议的习惯?它真的改变了Javascript的概念吗?
AngularJS 2.0官网
TypeScript
对于TS,有最多的资源(文档,…),因为有一个巨大的用户群。
Dart和JS版本的Angular是从TS生成的。
似乎有很多问题,以获得一个Angular TS项目启动和运行(见Angular2问题在这里SO),但有种子项目可用,一切已经建立。我不知道细节,因为我只使用Dart自己。
对于TS现在有Angular CLI,它改善了Angular2的TypeScript的开发者体验。
JavaScript,ES5,ES6
如果你是一个JS纯粹主义者,它可能是你正确的语言。如果没有(如果你是你可能不会问这个问题),那么我相信你最好使用Dart或TS。
Angular使用类型注释在几个方面。使用JS需要“解决方法”,否则一个简单的类型注释就足够了(主要是依赖注入)。
镖
Dart是一个很好的语言与一组工具,一起工作良好。
很多问题的JS / TS环境导致Dart解决优雅。
自从2016/05年左右Angular2 Dart是一个独立的项目,与TS和JS版本(截至2016/10)有很大不同。
>在TS中多次替换的路由器模块使其与离线模板编译工作,在Dart中没有被替换,因为在Dart延迟加载也可以与“老”路由器正常工作。> …而且NgModule也没有介绍给Dart因为同样的原因。>为TS创建的新的Forms模块未移植到Dart。> Dart从一开始就有离线模板编译,但不支持browser-platform-dynamic在运行时编译组件。>一个新的依赖注入模块似乎正在进行中的Dart基于Dagger2(目前还不可用)替换自动生成的TypeScript代码的DI系统。> Angular2 Dart强烈关注构建输出大小和运行时性能,但是AFAIK支持多平台支持(如服务器端渲染)已被放弃。
今天关于AngularJS中的TypeScript拦截器和angularjs 拦截器的分享就到这里,希望大家有所收获,若想了解更多关于angular – 由typescript导入的代码的Typescript类型?、angular – 类undecript的Typescript方法、angular2 – 如何部署Angular 2应用程序开发的Typescript到生产?、AngularJS 2 – 使用哪种语言? (Typescript,Javascript,Dart)等相关知识,可以在本站进行查询。
本文标签: