私は奇妙な問題を抱えています:
interface PreferencesData {
}
class Background {
a:PreferencesData; // OK
private state = {
preferences : PreferencesData // NOT OK
}
..
「NOT_OK」の場合-それは単に見ることができずPreferencesData
、コンパイルを拒否します。
しかし、「a」の場合、それは表示され、文句はありません。
私は何かが恋しいですか?
更新:に変更interface
するとclass
、表示されます
次のように、オブジェクトの前に型注釈に型情報を配置する必要があります。
class Example1 {
a:PreferencesData;
private state: { preferences: PreferencesData } = {
preferences: ""
}
}
どうして?なぜなら:
オブジェクトリテラル分離し、キー/値の組の内部ので、右側の式は値ではなく、型注釈であると予想されます。
これは面倒に見えるので、次の状態オブジェクトのインターフェイスを作成することを決定できます。
interface State {
preferences: PreferencesData;
}
class Example2 {
a:PreferencesData;
private state: State = {
preferences: ""
}
}
注:上記の""
空の文字列は、有効なPreferencesData
互換性のある構造に置き換える必要がありますが、元の質問ではそれが何であるかを指定していません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加