Пусть у меня есть следующий класс:Cast объект некоторого класса, добавляя функцию этого класса объекта
class Person {
name: string;
age: number;
country: string;
canVote(): boolean {
return (this.country === "SomeCountry" && this.age >= 16) || (this.country === "SomeOtherCountry" && this.age >= 18);
}
}
Есть ли способ в машинописи, чтобы бросить объект, содержащий name
, age
и country
атрибутов быть экземпляр класса Person
, который я могу назвать canVote
, так? (Прямо сейчас, это не компилируется, потому что canVote
отсутствует)
let person: Person = {
name: "SomePerson",
age: 42,
country: "SomeCountry"
}
console.log(person.canVote());
Я знаю, что есть параметр свойства, которые позволили бы мне сделать следующее:
class Person {
constructor(readonly name: string, readonly age: number, readonly country: string) {
}
canVote(): boolean {
return (this.country === "SomeCountry" && this.age >= 16) || (this.country === "SomeOtherCountry" && this.age >= 18);
}
}
let person = new Person("SomePerson", 42, "SomeCountry");
Однако, я думаю, это было бы получить неясными довольно быстро, если количество свойств увеличивается или я хочу оставить необязательное свойство unset.