TypeScriptで隠しフィールドが用いられるようになった理由も構造的型付けが型安全性を欠くため