У меня есть следующий класс:
export class SomeModel {
prop1: number;
prop2: number;
comment: string;
}
и следующий метод для динамического получения его свойств:
getTypeProperties<T>(obj: T): string[] {
const ret: string[] = [];
for (const key in obj) {
if (obj.hasOwnProperty(key))
ret.push(key);
}
return ret;
}
Следующий вызов возвращает пустой массив:
getTypeProperties(new SomeModel());
Однако, если я явно инициализирую все свойства с null
, свойства будут возвращены правильно:
export class SomeModel {
prop1: number = null;
prop2: number = null;
comment: string = null;
}
Вопрос: Это нормальное поведение? Или есть переключатель компилятора TypeScript для переключения этого?
Я не знаю, имеет ли это отношение, но вот содержание tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}