有没有办法让一个变量只分配一次?这样地

interface IFACE {
  a: number;
  final b: number;
}

IFACEConstructor (a: number): IFACE {
  return {a: a, b: 1}
}

test = IFACEConstructor(2);
test.a = 5 // OK
test.b = 2 // Error

推荐答案

它将从1.4开始提供,您可以查看Announcing TypeScript 1.4 article, "Let/Const" support section:

"TypeScript现在支持在'var'之外使用'let'和'const'.目前这些都需要ES6输出模式,但我们正在研究在future 的版本中放宽这一限制."

Const应按照article执行.

你可以得到TypeScript 1.4 here.

更新1

当然,"const和final不一样".问题是"有没有办法让变量只分配一次?".

常量声明必须有初始值设定项,除非在环境上下文中

写入常量是错误的

const c = 0;
console.log(c); // OK: 0

c = 2; // Error
c++; // Error

{
    const c2 = 0;
    var c2 = 0; // not a redeclaration, as the var is hoisted out, but still a write to c2
}

目前(2015年11月),在我看来,"const"似乎是完成上述任务的唯一方法,由现成的typescript提供.

对于那些投了反对票的人——如果你还有其他答案,请在这个帖子中与comunity分享.

更新2:只读

Typescript 2.0中引入了readonly修饰符(感谢@basarat).You can initialize them at the point of declaration or in the constructor.

甚至可以将类属性声明为只读.你可以初始化

class Foo {
    readonly bar = 1; // OK
    readonly baz: string;
    constructor() {
        this.baz = "hello";  // OK
    }
}

但正如《this thread》中的@RReverser所说:

像往常一样,对于所有 fresh 的东西,你需要使用npm i

Typescript相关问答推荐

在泛型类型中对子代执行递归时出错

泛型函数即使没有提供类型

如何在TypeScrip中使用嵌套对象中的类型映射?

如何使用泛型自动推断TS中的类型

访问继承接口的属性时在html中出错.角形

在数据加载后,如何使用NgFor在使用异步管道的可观测对象上生成子组件?

为什么ESLint会抱怨函数调用返回的隐式`any`?

刷新页面时,TypeScrip Redux丢失状态

不带其他属性的精确函数返回类型

@TANSTACK/REACT-QUERY中发生Mutations 后的数据刷新问题

跟踪深度路径时按条件提取嵌套类型

自定义 Select 组件的类型问题:使用带逗号的泛型类型<;T与不带逗号的<;T&>;时出错

TypeScrip-如何自动推断UNION变量的类型

三重融合视角与正交阵

推断集合访问器类型

TypeScript:方法获胜';t接受较窄类型作为参数

如何键入';v型';

如何避免TS2322;类型any不可分配给类型never;使用索引访问时

为什么过滤器不改变可能的类型?

如何在没有空接口的情况下实现求和类型功能?