0

I'm trying to extend an existing enum in typescript. It's look like working when typing but value for extended enum member is undefined.

I'm using node.js 8.0.0 with tsc 2.4.2

--- ecategorytype.ts ---

export enum eCategoryType {
    generic = 'generic',

    resources = 'resources',
    friendGroup = 'friendGroup'
}

--- enumextend.ts ---

import eCategoryType from './ecategorytype';

declare module './ecategorytype' {
    export enum eCategoryType {
        classGroup = 'classGroup',
        testGroup = 'testGroup'
    }
}

--- usage ---

import eCategoryType from '../models/category/ecategorytype';
import '../models/category/enumextend';
console.log(eCategoryType.friendGroup);
console.log(eCategoryType.classGroup);
console.log(eCategoryType.testGroup);

--- enumextend.d.ts ---

declare module './ecategorytype' {
    enum eCategoryType {
        classGroup = "classGroup",
        testGroup = "testGroup",
    }
}
export {};

--- enumextend.js ---

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=typeext.js.map

--- expected console output ----

friendGroup
testGroup
classGroup

--- reality console output ---

friendGroup
undefined
undefined

What could be wrong please?

  • Where do you import `enumextend.ts`? – zerkms Aug 06 '17 at 06:12
  • Updated: I tried to call: import '../models/category/enumextend' in usage but still same result. – Lumos Dang Aug 06 '17 at 06:26
  • `import '../models/category/enumextend';` --- what does this import supposed to do? You run it but don't use any exported identifiers. – zerkms Aug 06 '17 at 06:35
  • error TS2305: Module '"src/models/category/enumextend"' has no exported member 'eCategoryType'. if I call import {eCategoryType} from '../models/category/enumextend'; – Lumos Dang Aug 06 '17 at 08:32
  • Possible duplicate of [TypeScript: extending imported enum](https://stackoverflow.com/questions/41940349/typescript-extending-imported-enum) – jcalz Aug 06 '17 at 12:13

1 Answers1

0

You import is wrong:

import eCategoryType from '../models/category/ecategorytype';

Should be:

import {eCategoryType} from '../models/category/ecategorytype';
basarat
  • 261,912
  • 58
  • 460
  • 511