В TypeScript, когда мы хотим автоматически создавать свойства в нашем классе из определения конструктора, мы можем воспользоваться сокращением параметров параметров, например:
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;
}
}
Вопрос. Как скомбинировать стенографию параметров и Destructuring в 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}) {
}
}
Но я не имел успеха. Любые мысли?