错误TS2539:无法分配给'c',因为它不是变量

时间:2017-09-01 09:34:12

标签: javascript typescript

我有2个.ts文件,

C.ts:

export let c: any = 10;

A.ts:

import { c } from "./C";
c = 100;

当我编译A.ts时,出现错误:

error TS2539: Cannot assign to 'c' because it is not a variable.

我该如何解决?

4 个答案:

答案 0 :(得分:2)

使用对象作为名称空间:

export let state = {
    c : 10 as number;
}

答案 1 :(得分:1)

看,这里有一个混乱。 Axel Rauschmayer博士在this article

中钉了它
  

CommonJS模块导出值。 ES6模块导出绑定 - 实时   与价值观的联系。

//------ lib.js ------
export let mutableValue = 3;
export function incMutableValue() {
    mutableValue++;
}

//------ main1.js ------
import { mutableValue, incMutableValue } from './lib';

// The imported value is live
console.log(mutableValue); // 3
incMutableValue();
console.log(mutableValue); // 4

// The imported value can’t be changed
mutableValue++; // TypeError

所以你有两个选择:

  • 调整compilerOptions,以便将您的模块视为CommonJS one
  • 将导入的值视为绑定(别名),而不是真正的标识符

答案 2 :(得分:0)

您当然可以只导出为内部包含 c 变量的对象,例如:

export const options = {
    c: 10 as number
}

答案 3 :(得分:-2)

无法分配c变量,因为您使用了let

export let c: any = 10;

你必须像

一样
export c: any = 10;