Если вы не установите значение для свойства, оно не будет существовать для объекта.Во время выполнения нет доступных метаданных, которые сообщают: «Это свойство объявлено, но оно никогда не было назначено».
Вам нужно будет выбрать значение по умолчанию для propertyA
и установить его (возможно, в инициализаторе надекларации), если вы хотите убедиться, что каждый экземпляр A
имеет это свойство.
Например, если вы не используете строгие проверки на ноль, вы можете сделать это:
class A {
id: number
propertyA: string = undefined
constructor(id: number) {
this.id = id
}
}
Это означает, что new A(42).propertyA
будет продолжать предоставлять значение undefined
(как это происходит с существующим классом A
), но свойство действительно будет существовать, и SomeFunction
сможет его найти.
Live Copy:
class A {
id /* : number*/
propertyA /*: string*/ = undefined
constructor(id/*: number*/) {
this.id = id
}
}
console.log(Object.getOwnPropertyNames(new A(42)));
Если вы используете строгие нулевые проверки, вам нужно инициализировать его в строку.