【发布时间】:2016-01-27 23:49:27
【问题描述】:
我是 TypeScript 的新手,我想知道是否存在重写代码的好方法,以避免以下代码中出现 TSLint 错误“不允许通过字符串文字访问对象”
interface ECType
{
name: string;
type: string;
elementType?: string;
}
export var fields: { [structName: string]: Array<ECType>; } = { };
class ECStruct1 {
foo: string;
bar: number;
baz: boolean;
qux: number;
quux: number;
corge: ECStruct2[];
grault: ECStruct2;
constructor() {
...
}
}
fields['ECStruct1'] = [
{ name: 'foo', type: 'string' },
{ name: 'bar', type: 'int' },
{ name: 'baz', type: 'bool' },
{ name: 'qux', type: 'long' },
{ name: 'quux', type: 'ulong' },
{ name: 'corge', type: 'array', elementType: 'ECStruct2' },
{ name: 'grault', type: 'ECStruct2' }
];
更新:最后上面的内容将是一个超过300个ECStructs的自生成文件的一部分,所以我想要类定义(例如ECStruct1 ) 后跟其元描述(例如fields['ECStruct1'])。
【问题讨论】:
-
我从未使用过 TS,但查看错误并查看代码,我会说您需要将
fields['ECStruct1']替换为fields.ECStruct1。使用点符号来访问对象道具通常比字符串文字访问更受欢迎。 -
谢谢。我已经尝试过了,但是 TS 编译器不允许
fields.ECStruct1=:错误 TS2339 属性 'ECStruct1' 在类型 '{ [structName: string]: ECType[]; 上不存在}'。
标签: typescript tslint