我一直在使用1年的打字稿,每次我需要传递一个对象时,我需要以丑陋的方式或手动操作。
在typescript中有类型定义的接口,并保存我们需要的所有参数。有没有办法可以用它来创造对象?
示例:
export interface User {
name: string;
email: string;
}
我希望下面的代码能够自动化,我无法从界面rater中创建它我用构造函数创建了一个类。
user {
name: ''/null/undefined,
email: ''/null/undefined
}
let user: User = new User() // this will show error
但我可以在下面的课程中创建一个新对象。
export class User {
constructor() {
name: string;
email: string;
}
}
new User();
哪一个是击球手?创建构造函数类或接口?
答案 0 :(得分:2)
是的,如果您不需要分配/实例化界面中定义的所有属性,您可以直接为界面分配值,也可以通过它的外观分配值,然后您可以使用?
将它们标记为可选。在以下示例电子邮件中,标记为可选,随后的用户分配将是有效的声明。
interface User {
name: string;
email?: string;
}
let user: User = { name: '' };
答案 1 :(得分:1)
我认为没有办法。
接口和类是两个不同的东西,有不同的用例。接口只是结构而不能有实例,您将看到生成JavaScript的已编译打字稿,您将无法在任何地方找到接口。
因此接口只在编译时而不是运行时。
但课程是运行时间。因此,当您说新的User()时,它会创建该类的实例,就像生成的JavaScript中那样。
如果符合您的情况,您还可以探索抽象类。
答案 2 :(得分:0)
你可以这样做:
export interface IMyInterface {
property1: string;
property2: number;
property3: boolean;
}
export class MyClass {
property1: string = '';
property2: number = 1;
property3: boolean = false;
constructor(){}
}
然后实例化:
let newFromInterface = new MyClass();
我通常在共享服务中导出接口和类,然后在我的组件中导入它们并实例化它们。