私は次のクラス定義を持っています、私はこのようにそれを使用するTypescriptでは、なぜ読み込み専用として定義されているクラスのプロパティを設定する必要がありますか?
他の場所で私のコードでclass Department
{
name: string;
id: string;
get prefix(): string
{
return !isNaN(parseFloat(this.id)) ? "n" : "i" ;
}
}
してみてください:
getDepartmentList(): Department[] {
return [
{
"name": "Dept 1",
"id": "1000"
}
];
}
しかし、私は次のエラーを取得する:
Type '{ "name": string; "id": string; }' is not assignable to type 'Department'. Property 'prefix' is missing in type '{ "name": string; "id": string; }'.
本当の問題はTypescriptの理解が不足していることですが、なぜコンパイラがゲッター関数をプロパティとみなして、それ?
はあなたにアレックスをありがとう!私は、私が「プレフィックス」を関数ではなくプロパティとして見たという事実から私の混乱が生じたと思うので、インスタンス化時にそれを割り当てなければならないとは思わなかった。 –
通常の関数であっても、Department型のオブジェクトに存在することを確認する必要があります。これは、ここのパターンに従ってDepartment型の一部として宣言されるためです。 – Alex
ここ数年、C#の開発をしてきた人にとっては、これはまったく直感的ではないようです。 –