私は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' }
];
更新:最後に、上記のコンテンツは300ECStruct
秒を超える自己生成ファイルの一部になるため、クラス定義(eg ECStruct1
)の後にメタ記述(eg fields['ECStruct1']
)を付けたいと思います。
fields['ECStruct1']
とfields.ECStruct1
。オブジェクトの小道具にアクセスするためにドット表記を使用することは、通常、文字列リテラルアクセスよりも優先されます。