在typescript中绑定接口构造函数有什么简写吗?

时间:2015-11-12 16:33:56

标签: typescript

我是打字稿世界的新手,我知道可以将构造函数的参数绑定到类这样的

class user {
     constructor(private username:string){}
}

而不是

class user {
     constructor(username:string){
           this.username = username;
      }
 }

我只是想知道是否可以用接口做类似的事情?例如:

interface IUser{
    username:string;
}

class User implements IUser  {
    constructor( private data:IUser ){
    }
}

1 个答案:

答案 0 :(得分:2)

没有速记。您需要将传入的对象的属性映射到类的实例。您可以在a number of ways中执行此操作。这是一个例子:

class User implements IUser  {
    username: string;

    constructor(data: IUser) {
        Object.keys(data).forEach((key) => {
            this[key] = data[key];
        });
    }
}

请注意,在此示例中,如果传入的对象具有其他属性,那么也会将这些属性映射到您的对象。

顺便说一句,较短的方法是使用Object.assignassignObject上新的ES6函数。您可以使用链接到站点上的polyfill使其在不支持它的运行时环境中工作。