打字稿 - 如何访问通过命名空间声明的类?



初学者的一个快速问题。我目前正在研究减少项目中"导入"数量的方法,并偶然发现了本教程 - 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 类的新实例并为其分配一些属性?如何为对象分配属性,在这种情况下,它只是命名空间的属性?

多谢

如何声明客户类的新实例并为其分配一些属性?要声明类的新实例,您首先需要声明一个实现接口的类:

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;

TypeScript 类型系统是结构化的,而不是名义上的,不像 C# 或 C++。这就是为什么您可以创建customer因为对象结构是相同的。

希望这有帮助!

最新更新