2017-06-04 78 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; 
}());