2017-06-04 77 views
3

与参数属性解构我读过有关打字稿如何提供速记,您可以与访问修饰符前缀构造函数的参数,它是在该类自动声明,并从构造结合对象打字稿

class Foo { 
    x: number; 
    constructor(x:number) { 
     this.x = x; 
    } 
} 
复制

所以前面的例子可以重新写为(通知公众X:编号):

class Foo { 
    constructor(public x:number) { 
    } 
} 

但随着参数与对象的文字,我不能做到这一点:

export class Hero { 
    constructor({public id = 0 , public name = 'noname'}: {id?: number, name?: string } = {}) { 
    } 
} 

我得到双重错误:错误TS1005:'='预计。

是否有可能在打字稿中做到这一点?

回答

0

在TypeScript中尚不支持组合对象销毁和参数属性的具体要求。有关详细信息,请参见https://github.com/Microsoft/TypeScript/issues/5326。 但你可以实现一种变通方法,并定义一个接口(或类,它不是在打字稿显著)此puprose这样的:

interface TestInterface { 
    id: number; 
    name: string; 
} 

class Greeter { 
    constructor(public greeting: string, public objectField: TestInterface) { 
    } 

    greet() { 
     return "Hello, " + this.greeting + " " + this.objectField.name; 
    } 
} 

let greeter = new Greeter("world", { id: 0, name: 'no name' }); 

alert(greeter.greet()); 

但是,如果你定义TestInterface为类,那么相应的construcor功能将在遵守JS。

var TestInterface = (function() { 
    function TestInterface() { 
    } 
    return TestInterface; 
}());