gpt4 book ai didi

javascript - TypeScript 和 systemjs 循环依赖

转载 作者:行者123 更新时间:2023-11-30 16:27:26 24 4
gpt4 key购买 nike

我对模块的循环依赖有问题:

偶数.ts

import { Odd } from './odd';

export class Even {

log(){
return console.log(Odd);
}
}

奇数.ts

import { Even } from './even';

export class Odd extends Even{

log(){
return console.log(Even);
}

}

配置:

System.config({
defaultJSExtensions: true,
baseURL: '/',
transpiler: 'typescript'
});

System.import('even.js').then( a => console.log(a));

我尝试使用 requre.js,但它无法解决循环依赖。在 systemjs 文档中 is written that it can resolve circle depedencies但它不起作用。异常是 Cannot read property 'prototype' of undefined in __extends 函数。

也许使用 CommonJS 更好,但据我所知,我不能像在 AMD 和 SystemJS 中那样使用根目录中的模块路径。

最佳答案

如果你只是需要修复它然后做

System.import('./odd')
.then(() => System.import('./even'))
.then(a => console.log(a));

会起作用。

问题发生在同时使用 TypeScript 和 Babel 的情况下,似乎是由于它们在 ES5 中实现类继承的方式所致(通过转译代码中的 _extends 和 _inherits 方法)。这些方法依赖于包含父类(super class)的模块已完全执行,但是 SystemJS 不知道这一点,因此它没有以正确的顺序执行模块。

关于javascript - TypeScript 和 systemjs 循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33897273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com