加载使用 SystemJS 扩展其他类的类
Loading classes that extends other with SystemJS
我的 Angular2 应用程序中有两个类,其中一个扩展另一个,如下所示,文件中的第一个 course.ts(加载时为 js)
export class Course {
id:string;
}
第二个在schoolCourse.ts(加载时js)
import {Course} from "./course";
export class SchoolCourse extends Course {
code:string;
}
要在浏览器中加载应用程序,请使用以下 SystemJs 代码
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/app/boot')
.then(null, console.error.bind(console));
</script>
当我将学校课程类作为扩展类加载应用程序时,出现错误
类扩展值未定义不是函数或空
值
从 Angular2-polyfill 发射.js
展开并查看它来自的堆栈跟踪
加载 http://localhost:3000/app/app/boot.js 时出错 执行时 (http://localhost:3000/app/courses/schoolCourse.js:15:48)
引用的那行是js中说SchoolCourse扩展课程的行。
对我来说,这听起来像是在 SchoolCourse 课程之前加载课程的问题,但我可以完全做到,而且我不像 SystemJ 那样聪明。
有人知道我如何解决这个问题吗?
您的SchoolCourse
类import
Course
类吗?
import {Course} from './path/to/course';
export class SchoolCourse extends Course {
code: string;
}
import
行应向 SystemJS 指示必须在SchoolCourse
之前加载Course
。
要检查的另一件事 - 在浏览器的开发工具中,打开"网络"选项卡并在应用程序加载时观察流量。 在呼叫schoolCourse.js
之前是否会拨打course.js
?
根本不是 SystemJs 的问题,或者我认为不仅仅是愚蠢的问题,开发团队没有在课程类和 SchoolCourse 类中观察到用户或相同的函数名称。修复后,一切正常。
所以,扩散错误,愚蠢的错误。至少也许这有助于其他人度过糟糕的一天......
在使用扩展 SchoolCourse 之前,您忘记导入课程类:
import {Course} from './course';
export class SchoolCourse extends Course {
(...)
}
消息中可能打扰您的是需要函数。事实上,虽然 TypeScript 和 ES6 中有一个 class 关键字,但类在底层对应于 JavaScript 构造函数。这就是函数在运行时需要扩展的原因。
在不导入中,不会加载相应的模块(在浏览器中 devtools 的"网络"选项卡中看不到对 http://localhost:3000/app/courses/course.js 的调用),并且 Course 保持未定义状态。
- 如何在不影响其他元素的情况下扩展DIV
- 如何在My chrome扩展中获取其他chrome扩展的DOM访问权限
- Firefox扩展开发:如何在内容脚本中创建一个全局函数,以便其他加载的脚本文件可以访问它
- Typescript从其他ts文件扩展类
- 使用“nsIWebBrowserPersist saveURI”或Firefox扩展中的其他内容重新启动下载
- 如何在Chrome扩展名的内容JS文件中包含其他JavaScript文件
- Javascript:如何将数组元素扩展到所有其他元素并创建一个数组
- 内容脚本未在其他扩展程序页面的 iframe 中运行
- Chrome 扩展程序引用/调用内容脚本中的其他脚本函数
- 加载使用 SystemJS 扩展其他类的类
- 工作流程/选项以扩展其他选项
- Chrome 扩展程序会更新并重写为其他相同的扩展程序
- Chrome扩展程序如何基本上cURL其他页面
- 如何制作垂直菜单,以便其他菜单随着其扩展而下降
- 在 Redux 缩减器中扩展或克隆文件 Web API 对象以支持其他属性
- chrome扩展无法使用内容脚本和其他方式从谷歌加载外部javascript
- Canjs-扩展can.使用其他方法建模
- 如何在扩展中访问书签页面和其他chrome url
- 使用油脂/夯实键(或其他扩展)来省略web元素中的某些字符
- Chrome-查找哪些其他扩展正在使用特定权限