如何使用 TypeScript 编写 AngularJS 的 Controller
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用 TypeScript 编写 AngularJS 的 Controller相关的知识,希望对你有一定的参考价值。
参考技术A AngularJS 有许多强大的特性,其中之一便是 Controller。在这篇文章里,我将介绍如何使用 TypeScript 去编写 AngularJS 的 Controller。Controller 通常用来增强 AngularJS 作用域(Scope) 。当一个 Controller 通过 ng-controller 指令连接到 DOM 上的时候,Angular 将使用指定的 Conroller 函数初始化一个新的 Controller 对象。一个新的子 scope 将被创建并作为 $scope 变量注入到 Controller 的构造函数当中。
有两个选项将 Controller 连接到视图当中,一种是 Controller 作为语法,另外一种是使用 $scope 。如果使用 Controller 语法,Controller 实例将被分配一个在新作用域上的属性。
要想知道类型定义,看看 这个令人吃惊的仓库 ,它收集了几乎所有流行的 javascript 库。这些类型定义可以让我们得到任何编译时错误和 IDE 的智能支持。我使用 Visual Studio 和 Visual Code,它们都对 TypeScript 有很好的支持。
Typescript - 如何访问通过命名空间声明的类?
来自初学者的一个快速问题。我目前正在研究减少项目中“进口”数量的方法,并偶然发现了这个教程 - https://scotch.io/tutorials/3-useful-typescript-tips-for-angular
它建议使用命名空间来公开接口,就像这样
namespace ApiModel {
export interface Customer {
id: number;
name: string;
}
export interface User {
id: number;
isActive: boolean;
}
}
这就是我应该如何使用不同文件中的接口
export class MyComponent {
cust: ApiModel.Customer;
}
看起来不错,但有一件事我还是不明白。如何为Customer类的新实例启用delare并为其分配一些属性?如何为对象分配属性,就像在这种情况下,只是命名空间的属性?
非常感谢
如何声明Customer类的新实例并为其分配一些属性?要声明类的新实例,首先需要声明一个实现接口的类:
namespace MyNamespace {
export interface ICustomer {
id: number;
name: string;
}
}
class Customer implements MyNamespace.ICustomer {
id: number;
name: string;
constructor(id: number, name, string) {
this.id = id;
this.name = name;
}
}
你现在可以实例化Customer
类。
如何为对象分配属性,就像在这种情况下,只是命名空间的属性?命名空间没有属性。类和接口可以驻留在您的命名空间下。您可以创建一个与界面具有相同属性的customer
对象:
const customer = {
id: 1, name: "Mr. Bean"
} as MyNamespace.ICustomer;
与C#或C ++不同,TypeScript类型系统是结构化的而非名义上的。这就是为什么你可以创建customer
,因为对象结构是相同的。
希望这可以帮助!
以上是关于如何使用 TypeScript 编写 AngularJS 的 Controller的主要内容,如果未能解决你的问题,请参考以下文章
如何运行用 TypeScript 编写的 Mocha 测试?
如何使用 npm 链接和使用 TypeScript 编写的模块进行开发?
如何使用 Visual Studio Code 中的 Mocha 调试 Typescript 编写的单元测试