一个初学者的快速提问。我目前正在寻找减少项目中“导入”数量的方法,偶然发现了本教程-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类的新实例并为其分配一些属性?如何为对象分配属性,在这种情况下,该对象只是命名空间的属性?
非常感谢
答案 0 :(得分:0)
如何声明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
的原因,因为对象结构是相同的。
希望这会有所帮助!