什么是从打字稿中的接口创建对象的最佳方式
问题描述:
我从1年来一直使用打字稿,每当我需要一个对象传递时,我需要以丑陋的方式或手动执行它。什么是从打字稿中的接口创建对象的最佳方式
在typescript中有类型定义的接口并保存我们需要的所有参数。有没有一种方法可以创建对象?
例如:
export interface User {
name: string;
email: string;
}
我想下面的代码实现自动化,我不能从界面做评估者我已创建具有构造函数的类。
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();
哪一个是面糊?创建一个构造类或接口?
答
我不认为有办法。
接口和类是两个不同的东西,有不同的使用情况。接口只是结构,不能有实例,你会看到编译的生成JavaScript的脚本,你不会在任何地方找到接口。
所以接口只在编译时而不是运行时。
但类是运行时。所以当你说新的User()时,它会创建该类的实例,就像它在生成的JavaScript中那样。
如果它适合您的情况,您还可以探索抽象类。
答
是的,如果您不需要指定/实例化接口中定义的所有属性,则可以直接为接口分配值,并按照其外观分配值,然后使用?
将其标记为可选。在以下示例电子邮件中,标记为可选,并且用户的后续分配将是有效的语句。
interface User {
name: string;
email?: string;
}
let user: User = { name: '' };
+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();
我通常在共享服务出口的接口和类,然后在我的组件进口他们和实例化它们。
你是什么意思“我想要代码自动化”?你是否想直接为接口赋值而不创建实现类? – rageit
是的。那可能吗? –
您也可以使用对象字面量语法来创建它:'let user:User = {name:'',email:''};'。很明显,你是唯一能决定哪个更好的人,因为你是那种抱怨正常工作的人。 –