编辑
我在 TypeScript 的 Github 存储库上记录了一个问题,他们正在接受 PR 来实现它。
在 TypeScript 中,当我们想从构造函数定义中自动在类中创建属性时,我们可以利用 Parameter Properties 简写,例如:
class Person {
constructor(public firstName : string, public lastName : number, public age : number) {
}
}
然后,转译的 Javascript 将是:
var Person = (function () {
function Person(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
return Person;
})();
但是如果我们想在构造函数中接收一个对象,它会是这样的:
interface IPerson {
firstName : string,
lastName : string,
age: number
}
class Person {
constructor(person : IPerson) {
this.firstName = person.firstName;
this.lastName = person.lastName;
this.age = person.age;
}
}
从 TypeScript 1.5 开始,我们可以利用解构,例如:
class Person {
constructor({firstName, lastName, age} : {firstName: string, lastName: string, age: number}) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
}
问题:如何在 TypeScript 中结合参数属性简写和解构?
我试图public
在对象定义之前定义,例如:
class Person {
constructor(public {firstName, lastName, age} : {firstName: string, lastName: string, age: number}) {
}
}
试图在每个变量之前定义它,例如:
class Person {
constructor({public firstName, public lastName, public age} : {firstName: string, lastName: string, age: number}) {
}
}
但我没有成功。有什么想法吗?