2017-09-20 9 views
1

をスローします理由:活字体/リアクトthis.stateから構造化代入すると、私は私のリアクト構成要素の一つで、次の方法を持っているエラー

タイプ 'Readonly < {}>'はタイプ '{colors:any; } '。 プロパティ '色'が 'Readonly < {}>'の型にありません。

誰かが私にその理由を教えてもらえますか?私は間違いなくコンストラクタ内にthis.state.colorsを設定し、私がしなかったとしても、なぜそれが私にそのエラーを投げるかわからない。

+0

あなたは[これをしようとしています](https://www.typescriptlang.org/play/index.html#src=type%20State%20%3D%20%7B%0D%0A%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7%20% 3%20%緑色%20%7%20%7%3%3%20%7%20%20%7%20%20%7%20%20%7%20% %20%3D%20state%3B%0D%0A%0D%0Adocument.write(colors.green)%3B)?おそらく、あなたの状態が正しくセットアップされていない可能性があります。 –

+0

コンストラクタの 'this.state ='ステートメントに型インタフェースを割り当てる必要があるかもしれないと思います。何らかの理由で私はタイプが自動的に推測されると仮定しました。 – styke

+0

Readonlyは私には奇妙に思えるタイプです。 readonlyが型だとは思わなかった。それとも、私はエラーメッセージを誤解しています。 –

答えて

0

非構造の正しい構文は次のようである:

const { colors } = this.state; 

これは活字体でthis.state.colors

+0

私の構文はTypeScriptです - 'const {colors}'はES6構造解除部分で、 ':{colors:any}'はその変数のTypeScript型宣言です:https:// blog .mariusschulz.com/2015/11/13/typing-destructured-object-parameters-in-typescript – styke

+0

申し訳ありません、正しいリンクで更新されています – styke

1

があると仮定し、クラスのプロパティは、型定義を必要とする:

https://www.typescriptlang.org/docs/handbook/classes.html

this.state私のコンポーネントクラスのプロパティもその型定義が必要でした:

interface State{ 
    colors: string[]; 
}; 

class ColorPicker extends React.Component { 
    state: State; 
    //... 
} 

これを追加した後、エラーはなくなりました。

関連する問題