diff options
Diffstat (limited to 'node_modules/rxjs/src/internal/util/createErrorClass.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/util/createErrorClass.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/util/createErrorClass.ts b/node_modules/rxjs/src/internal/util/createErrorClass.ts new file mode 100644 index 0000000..e354fd3 --- /dev/null +++ b/node_modules/rxjs/src/internal/util/createErrorClass.ts @@ -0,0 +1,20 @@ +/** + * Used to create Error subclasses until the community moves away from ES5. + * + * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors + * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123 + * + * @param createImpl A factory function to create the actual constructor implementation. The returned + * function should be a named function that calls `_super` internally. + */ +export function createErrorClass<T>(createImpl: (_super: any) => any): T { + const _super = (instance: any) => { + Error.call(instance); + instance.stack = new Error().stack; + }; + + const ctorFunc = createImpl(_super); + ctorFunc.prototype = Object.create(Error.prototype); + ctorFunc.prototype.constructor = ctorFunc; + return ctorFunc; +} |
