1. ホーム
  2. typescript

[解決済み] エラー TS2322: タイプ 'Object[]' はタイプ '[Object]' に割り当てられません。

2022-02-09 06:09:41

質問

次のようなコードスニペットがあります。

export class TagCloud {

    tags: [Tag];
    locations: [Location];

    constructor() {
        this.tags = new Array<Tag>();
        this.locations = new Array<Location>();
    }
}

しかし、これでは以下のようなエラーが出てしまいます。

エラー TS2322: タイプ 'Tag[]' はタイプ '[Tag]' に割り当てることができません。 プロパティ '0' がタイプ 'Tag[]' にありません。

エラー TS2322: タイプ 'Location[]' はタイプ 'Lo'に割り当てられません。 カチオン]'です。 タイプ 'Location[]' にプロパティ '0' がありません。

私は何か間違っているのでしょうか(コードは動作していますが)?

es6-shimのType descriptionでtypingを使っているのですが( https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/es6-shim ).

解決方法は?

typescriptで配列を宣言するときは、次のどちらかを行います。

let a: Array<number>;

または

let a: number[];

使用する場合。

let a: [number];

を宣言していることになります。 タプル この場合、長さは1であり、数は1である。
これもタプルです。

let a: [number, string, string];

このエラーが発生する理由は、この配列に代入した配列の長さが tagslocations は0であり、1であるべきです。