Typescript error runtime error: Cannot read property 'prototype' of undefined when extending

后端 未结 5 688
你的背包
你的背包 2021-01-01 09:31

So I\'m getting the above error in the console. It\'s caused by _super being undefined when it\'s passed to __extends (in the generated .js

5条回答
  •  轮回少年
    2021-01-01 09:53

    Incurred in this error today. Not sure what was the OP scenario, but in my team's case we had:

    1. TypeScript v1.8.10
    2. Webpack-based development build with concatenation, source maps, no optimization/uglification
    3. Angular 2 dependency injection
    4. Both base and derived classes defined in same file (say, dependencies.ts)
    5. Base class defined after derived class
    6. No compile errors nor warnings
    7. Console log showing Uncaught TypeError: Cannot read property 'prototype' of undefined
    8. Call stack pointing at internal __extends function on the last line of another class, in another file (say client.ts), importing those as dependencies

    In code:

    // dependencies.ts
    
    import { Injectable } from 'angular2/core';
    
    @Injectable()
    export class LocalStorageService extends BaseStorageService {
      constructor() {
        super(localStorage);
      }
    }
    
    class BaseStorageService {
      constructor(private storage: Storage) {}
      // ...
    }
    

    and:

    // client.ts
    
    import { Injectable } from 'angular2/core';
    import { LocalStorageService } from './dependencies';
    
    @Injectable()
    export class AuthStorageService {
    
      constructor(private permanentStorage: LocalStorageService) { }
      // ...
    
    } // <-- call stack pointed here with inner '__extends' function
    

    Problem solved by defining base class before derived class. After a quick search & read, this seems related to known (and unresolved?) TypeScript issues, e.g. #21 and #1842.

    HTH

提交回复
热议问题