TypescriptでObject.prototypeを拡張できないのはなぜですか?
TypescriptでObject.prototypeがエラーになる理由を教えてください。
Typescriptを学習中のものです。
prototypeについて触れる機会があり、以下のサイトで下記のようなコードを目にしました。
const foo = { a: 1 };
const date = new Date();
const arr = [1, 2, 3];
// どのオブジェクトもhiプロパティが無いことを確認
console.log(foo.hi, date.hi, arr.hi);
// undefined undefined undefined
// プロトタイプにプロパティを追加する
Object.prototype.hi = "Hi!"; // ← 問題の箇所
// どのオブジェクトもhiプロパティを持つようになる
console.log(foo.hi, date.hi, arr.hi);
// Hi! Hi! Hi!
Object.prototype.hi = "Hi!";
/**
* 【エラー内容】
* プロパティ 'hi' は型 'Object' に存在しません。ts(2339)
*/
この処理はJavascriptでは問題なく実行までできるのですが、
Typescriptで書くとコンパイルエラーが起きます。
エラーの意味は理解できるのですが、
'hi'が存在しないのはJavascrpitも同様であるように思えます。
なぜJavascrpitでは実行でき、Typescriptではできないのでしょうか。
Javascrpitがインスタンスを生成した後にプロパティやメソッドを自由に追加できるように、なければシステム側で追加するのと同じ原理でしょうか。
const ObjA = {
name: "xxx",
age: 26,
}
let oA = Object.create(ObjA);
oA.gender = "men";
console.log(oA.gender); // men
何卒ご教示の程、宜しくお願いいたします。