如何在声明文件中声明只读属性?

时间:2016-06-28 09:00:28

标签: typescript

The following似乎无法编译:

declare namespace ns {
    interface Test {
        readonly x: number;
    }
}

使用:

  

找不到名字'readonly'   预期的财产或签名。

this也没有:

declare namespace ns {
    interface Test {
        const x: number;
    }
}

使用:

  

预期的财产或签名。

2 个答案:

答案 0 :(得分:2)

TypeScript 2.0编译的示例没有错误:

declare namespace ns {
    interface Test {
        readonly x: number;
    }
}

目前的版本是1.8。为了在下一个版本上进行测试,在本地安装上:1 /使用npm install typescript@next安装TypeScript的每晚构建,然后2 /执行编译器:./node_modules/.bin/tsc your-file.ts

答案 1 :(得分:1)

您无法在TypeScript中的value中为property分配interface。 那么如果不允许你最初设置它,你将如何设置readonly变量。

您可以使用module来了解this question here如何解决此问题的答案:

module MyModule {
    export const myReadOnlyProperty = 1;
}

MyModule.myReadOnlyProperty= '2'; // Throws an error.

更新

您似乎必须等待TypeScript 2.0,然后才会有readonly个属性:

https://github.com/Microsoft/TypeScript/pull/6532