GVKun编程网logo

AngularJS中的TypeScript拦截器(angularjs 拦截器)

15

在本文中,我们将给您介绍关于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 拦截器)

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 – 由typescript导入的代码的Typescript类型?

这是一个Angular应用程序的问题,但我不认为这是一个角度特定的问题.

我正在开发一个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方法

angular – 类undecript的Typescript方法

在Typescript中,我有一个类Contact,它实现了一个接口IContact.
我想向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!

解决方法

您可能正在尝试在从JSON动态转换的对象上调用此方法.动态铸造的对象没有在类中定义的方法,它们只是尊重合同并拥有属性.

使当前代码工作的唯一方法是创建一个新的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到生产?

angular2 – 如何部署Angular 2应用程序开发的Typescript到生产?

我是Angular 2的新手。我困惑于Angular 2如何在生产环境中工作。

>在生产服务器中运行Angular 2应用程序的先决条件是什么?
>是否可能在IIS服务器中部署应用程序或需要节点服务器?
>在开发机器中使用节点编译文件后,我们需要将.js和.ts部署到生产环境吗?

我使用JSPM使我的angular2项目生产准备。其他流行的工具,如JSPM包括webpack和browserfy。 JSPM将完成的重要任务之一是捆绑构成您的angular2项目的各个模块。我还将“selfExecutingBundle”标志设置为true,并让JSPM制作一个捆绑的js文件(例如myApp.bundled.js),并从那里我minify它(myApp.bundled.min.js)和这一个脚本引用用于index.html文件。
<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)

AngularJS 2 – 使用哪种语言? (Typescript,Javascript,Dart)

随着AngularJS 2的出现,文档建议三种语言:
打字稿,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官网

Dart使其易于启动,因为您需要的一切都是由Darts生态系统提供的(语言,包管理,构建,…)。

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)等相关知识,可以在本站进行查询。

本文标签: