我试图为一个在箭头函数之外定义的变量赋值,如下所示:
let leftPanel: PerspectivePanel;
let rightPanel: PerspectivePanel;
let temp = L.withFlex(1, L.box(direction, [
L.withFlex(
1,
element => {
element.className = 'gllayoutcell noselect';
leftPanel = new PerspectivePanel(display, element, perspectiveViewerState);
this.registerDisposer(leftPanel);
}),
L.withFlex(
1,
element => {
element.className = 'gllayoutcell noselect';
rightPanel = new PerspectivePanel(display, element, perspectiveViewerState2);
this.registerDisposer(rightPanel);
}),
]))(rootElement);
leftPanel.otherRenderedDataPanel = rightPanel;
rightPanel.otherRenderedDataPanel = leftPanel;
但是编译器给出了我在定义之前使用变量的错误。如何在外部看到变量?
编辑:我不明白箭头功能在它下面的两个分配之后被调用的方式。因为很明显它在它们之前被调用,元素是rootElement。
答案 0 :(得分:0)
编译器抱怨,因为leftPanel
和rightPanel
可能尚未分配。这是因为它们首先在你的一个箭头函数中被赋值,在编译时它们将被调用时是未知的。
我假设您使用strictNullChecks: true
。在这种情况下,您可以通过明确声明两个变量中的每一个都可以是undefined
然后使用类型断言来解决此问题:
let leftPanel: PerspectivePanel | undefined;
let rightPanel: PerspectivePanel | undefined;
...
leftPanel!.otherRenderedDataPanel = rightPanel!;
rightPanel!.otherRenderedDataPanel = leftPanel!;
答案 1 :(得分:0)
我通过将reft和right Panel定义为类属性并在箭头函数中定义classB
来解决问题。我仍然不知道为什么其他方法不起作用,但这对我来说是一种解决方法。