Ошибка, которую вы видите, связана с тем, что TypeScript по умолчанию не знает, что ваш объект obj имеет свойство age. В чистом JavaScript такие ошибки не возникают, так как JavaScript динамически типизирован. В TypeScript нужно явно указывать типы, чтобы избежать подобных ошибок.
В вашем случае, вы можете создать интерфейс, описывающий структуру вашего объекта, и использовать приведение типов. Как можно это сделать:
interface Person {
name: string;
age: number;
calculateBirthYear: () => void;
}
const obj = Object.create(
{
calculateBirthYear() {
return console.log(new Date().getFullYear() - this.age);
},
},
{
name: {
value: 'Radik',
enumerable: true,
},
age: {
value: 46,
enumerable: true,
},
}
) as Person;
obj.calculateBirthYear(); // Должно вывести в консоль 1978
Результат выполнения программы что код работает