in lib/semantic.js [2593:2627]
getPropertyType(type, propName) {
if (type.type === 'map') {
if (type.valueType.name === 'any') {
return _basic('any');
}
if (!type.valueType.name) {
return type.valueType;
}
if (isBasicType(type.valueType.name)) {
return _basic(type.valueType.name);
}
return this.getModel(type.valueType.name, type.valueType.moduleName);
}
if (type.type === 'model') {
let model, checker = this;
if (type.moduleName) {
checker = this.dependencies.get(type.moduleName);
model = checker.models.get(type.name);
} else if (builtin.has(type.name)) {
model = builtin.get(type.name);
} else {
model = this.models.get(type.name);
}
const find = checker.findProperty(model, propName, model.isException);
if (!find) {
return;
}
const moduleName = find.moduleName || type.moduleName;
return this.getFieldType(find.modelField, find.modelName, moduleName);
}
}