@@ -888,8 +888,12 @@ namespace ts {
888888
889889 function getTargetOfImportClause(node: ImportClause): Symbol {
890890 const moduleSymbol = resolveExternalModuleName(node, (<ImportDeclaration>node.parent).moduleSpecifier);
891+
891892 if (moduleSymbol) {
892- const exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]);
893+ const exportDefaultSymbol = moduleSymbol.exports["export="] ?
894+ getPropertyOfType(getTypeOfSymbol(moduleSymbol.exports["export="]), "default") :
895+ resolveSymbol(moduleSymbol.exports["default"]);
896+
893897 if (!exportDefaultSymbol && !allowSyntheticDefaultImports) {
894898 error(node.name, Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol));
895899 }
@@ -960,8 +964,15 @@ namespace ts {
960964 if (targetSymbol) {
961965 const name = specifier.propertyName || specifier.name;
962966 if (name.text) {
967+ let symbolFromVariable: Symbol;
968+ // First check if module was specified with "export=". If so, get the member from the resolved type
969+ if (moduleSymbol && moduleSymbol.exports && moduleSymbol.exports["export="]) {
970+ symbolFromVariable = getPropertyOfType(getTypeOfSymbol(targetSymbol), name.text);
971+ }
972+ else {
973+ symbolFromVariable = getPropertyOfVariable(targetSymbol, name.text);
974+ }
963975 const symbolFromModule = getExportOfModule(targetSymbol, name.text);
964- const symbolFromVariable = getPropertyOfVariable(targetSymbol, name.text);
965976 const symbol = symbolFromModule && symbolFromVariable ?
966977 combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) :
967978 symbolFromModule || symbolFromVariable;
0 commit comments