什么是从打字稿中的接口创建对象的最佳方式

问题描述:

我从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(); 

哪一个是面糊?创建一个构造类或接口?

+0

你是什么意思“我想要代码自动化”?你是否想直接为接口赋值而不创建实现类? – rageit

+0

是的。那可能吗? –

+0

您也可以使用对象字面量语法来创建它:'let user:User = {name:'',email:''};'。很明显,你是唯一能决定哪个更好的人,因为你是那种抱怨正常工作的人。 –

我不认为有办法。

接口和类是两个不同的东西,有不同的使用情况。接口只是结构,不能有实例,你会看到编译的生成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(); 

我通常在共享服务出口的接口和类,然后在我的组件进口他们和实例化它们。