2017-12-14 3 views
1

現在、WebpackプロジェクトでTypescriptでVue.jsを使用しています。データを設定するタイプコードを使ってVueデータオブジェクトに入力する

私が持っている私のtsconfig.jsonRecommended Configurationに示されているように:

私は私のコンポーネントの1インサイド

"strict": true,

declare interface Player { 
    cod: string, 
    param: string 
    } 

export default Vue.extend({ 
    name: 'basecomponent', 
    data() { 
     return { 
     players: [] 
     }; 
    }, 
    created() 
     let self = this 
     axios.get('fetch-data') 
     .then((response) => { 
      let res: Players[] = response.data; 
      for(let i = 0; i < res.length; i++){ 
       self.players.push(res[i]); 
      } 
     }) 
     .catch((error: string) => { 
      console.log(error); 
     }); 
    }, 
}); 

が、私は私が手コンパイルしよう:

error TS2345: Argument of type 'Player' is not assignable to parameter of type 'never'. 

原因私はplayers: []never[]タイプです。

私の質問は、どのようにタイプVueデータオブジェクトのプロパティを推測できますか?

答えて

0

dataメソッドの戻り値が宣言されていません。

1つを入力すると、TypeScriptはplayersで何を期待するのかを知ることができます。

data() {行を展開するだけです。

例えば:になるための

​​

ニーズ:

data() : { 
    people: Array<any>, // if possible, replace `any` with something more specific 
} { 
    return { 
    players: [] 
    }; 
}, 

多田! playerはanyの配列になります。

+0

私は提案された解決策を理解しているとは思わないが、あなたのコードは意味上間違っている "データ"はオブジェクトを返す関数でなければならない... – Plastic

+0

それは一般的なtypescriptではなく、オブジェクト – Plastic

関連する問題