【问题标题】:TS2364: Invalid left-hand side of assignment expressionTS2364:赋值表达式的左侧无效
【发布时间】:2016-11-24 14:16:26
【问题描述】:

a 是一个可变数组,为什么不能赋值给它呢?

foo.ts

export let a: any[];

bar.ts

import {a} from './foo';

a = [5,6,7];

【问题讨论】:

    标签: typescript ecmascript-6


    【解决方案1】:

    a 包含一个可变数组,因此您可以对其进行变异:

    a.splice(0, a.length, 5, 6, 7);
    console.log(a);
    

    bar 中的a 然而,是一个导入的绑定,不能重新分配。这就是为什么它是一个语法错误。

    您可以在foo 中分配给a,但它的行为就像一个普通变量。

    【讨论】:

    • "TypeError: Cannot read property 'splice' of undefined",检查生成的 JS 是否为 foo.ts 它是空的,只有 "use strict";
    • @AT:啊,抱歉,我被那个打字稿符号弄糊涂了。当然,您必须执行 export let a: any[] = […]; 才能实际导出数组。
    【解决方案2】:

    如果您希望能够在原始范围 (foo.ts) 内更改数组的值,那么您可以执行以下操作:

    export var a = {
        arr: []
    }
    

    然后在bar.ts:

    import {a} from './foo';
    
    a.arr = [5,6,7];
    

    【讨论】:

    • 事实上这也适用于const。我之前使用过一个对象,这就是为什么我没有收到此错误...
    • 是的,const 可以正常工作,只要您不更改其中的引用即可。
    猜你喜欢
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多