code: function fixupCompilerOptions(options, diagnostics) {
          // Lazily create this value to fix module loading errors.
          commandLineOptionsStringToEnum = commandLineOptionsStringToEnum || ts.filter(ts.optionDeclarations, function (o) {
              return typeof o.type === "object" && !ts.forEachProperty(o.type, function (v) { return typeof v !== "number"; });
          });
          options = ts.clone(options);
          var _loop_3 = function(opt) {
              if (!ts.hasProperty(options, opt.name)) {
                  return "continue";
              }
              var value = options[opt.name];
              // Value should be a key of opt.type
              if (typeof value === "string") {
                  // If value is not a string, this will fail
                  options[opt.name] = ts.parseCustomTypeOption(opt, value, diagnostics);
              }
              else {
                  if (!ts.forEachProperty(opt.type, function (v) { return v === value; })) {
                      // Supplied value isn't a valid enum value.
                      diagnostics.push(ts.createCompilerDiagnosticForInvalidCustomType(opt));
                  }
              }
          };
          for (var _i = 0, commandLineOptionsStringToEnum_1 = commandLineOptionsStringToEnum; _i < commandLineOptionsStringToEnum_1.length; _i++) {
              var opt = commandLineOptionsStringToEnum_1[_i];
              _loop_3(opt);
          }
          return options;
      }
docs: JS users may pass in string values for enum compiler options (such as ModuleKind), so convert.