3

「[オブジェクト]」型に代入できません。エラーTS2322:タイプ「オブジェクト[]」私はこのようなコードスニペット持っ

export class TagCloud { 

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

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

をしかし、これは私に次のエラーが得られます。

エラーTS2322: 'タグ[]'タイプは '[タグ]'タイプに割り当てられません。 タイプ 'Tag []'にプロパティ '0'がありません。

エラーTS2322:タイプ '[[ カチオン]]に「場所[]」を割り当てることができません。 タイプ 'Location []'にプロパティ '0'がありません。

私は間違っていますか(コードは機能しています)?

私はes6-shimタイプの説明(https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/es6-shim)でタイピングを使用しています。

答えて

5

あなたがいずれかを実行配列宣言時:

let a: Array<number>; 

または

let a: number[]; 

を使用する場合:

let a: [number]; 

をあなたが実際にa tupleを宣言しています、この場合は長さ1w i番目の番号。
これは別のタプルです:

let a: [number, string, string]; 

あなたはtagsに割り当てるとlocations配列の長さが0であり、それは1

する必要がありますので、このエラーが発生した理由があります
0

Tag[]を使用して、Tagという配列を宣言していることをTypeScriptに伝えたいとします。 typescriptですで

export class TagCloud { 

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

    constructor() { 
     // TS already knows the type 
     this.tags = [] 
     this.locations =[] 
    } 
} 
関連する問題