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
Possible reasons this is happening:
BundleConfig
is concatenating the files in the correct order. This is by far the most common cause of that error.export
directives in Test.ts
. This would cause the file to become an external module and Test1
would no longer be visible.Failing that, you should post the emitted JavaScript to the question so we can diagnose what's causing the issue.
The order of the scripts on your HTML matters.
Say you have a TypeScript file A.ts
that defines an abstract class
and a file B.ts
with a class that extends the abstract class in A.ts
export abstract class ShipmentsListScope implements IShipmentsListScope {
A.ts
:
module app.example{
"use strict";
interface IMyInterface{
// ..
}
export abstract class MyAbstract implements IMyInterface{
// ..
}
}
B.ts
module app.example{
"use strict";
class MyChildClass extends MyAbstract {
// ...
}
}
then in your HTML you have to ensure that the order of the scripts is correct once the javascripts have been generated:
<script src="/app/example/A.js"></script> <!-- A.js BEFORE -->
<script src="/app/example/B.js"></script>
Just leaving here how I solved this issue for my case : I missed a reference at the top of the TS file and it was totally ok for the build, whereas I had the same error on runtime. Adding the reference that seemed to be optional solved my runtime issue.
Incurred in this error today. Not sure what was the OP scenario, but in my team's case we had:
dependencies.ts
)Uncaught TypeError: Cannot read property 'prototype' of undefined
__extends
function on the last line of another class, in another file (say client.ts
), importing those as dependenciesIn 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
I had the same problem and it was caused by export default
statements. To fix it I simply removed those and imported the required items another way:
BEFORE
A.ts
export default MyClass;
class MyClass { ... }
B.ts
import MyClass from "./A";
class MyClass2 extends MyClass { ... }
AFTER
A.ts
export class MyClass { ... }
B.ts
import { MyClass } from "./A";
class MyClass2 extends MyClass { ... }