JavaScriptから来たTypeScriptの学習を始めました。インタフェースの仕組みを学んでいます。 IEmailableの形をとるオブジェクトを渡すのsendEmailと呼ばれる以下の機能でtypescriptのインタフェースについての問い合わせ
interface IEmailable { name: string, email: string }
:
私はIEmailableと呼ばれる次のインタフェースを作成しました
function sendEmail(contact: IEmailable){
console.log(contact.name + " <" + contact.email + ">"); }
}
したがって、これを実行:
sendEmail({
name: "Ciaran",
email: "[email protected]
});
有効です。
この実行しているのに対し:
sendEmail({
name: "Ciaran",
email: "[email protected],
phone: 07927382
});
が有効ではありません。
私のIDEでは、インターフェイスに存在しないインスタンス化されたオブジェクトに新しいプロパティを追加するとエラーが発生します。
「オブジェクトリテラルのみ知られているプロパティを指定することもできる」
は、だから私は、インターフェイスで定義されていないプロパティを追加は行われないことを理解しています。しかし、このチュートリアルでは、新しいプロパティの追加が追加でき、IDEにエラーがスローされないことを示しています。これはTypeScriptの最近のアップデートか、TypeScriptでのインターフェイスの動作を誤解していますか?公式docsを検索しましたが、実際には、サイズという新しいプロパティを追加します。これは、インターフェイスLabelledValueには存在しません。私は間違いなくそれを思慮しているが、誰かがこれをクリアすることができれば、それは素晴らしいだろう。ドキュメントあたりのAS
あなたは、オブジェクトリテラルの「過剰プロパティのチェック」を避けるために、型アサーションを使用することができます。以下の私のコードをチェックしてください。 – Niladri