Legalscape のしろくまです。
TypeScript の Type System では Nominal な比較が用いられることがあります。
例
class Product { private name: string; } class User { private name: string; } let p = new Product(); let u = new User(); // Type 'User' is not assignable to type 'Product'. // Types have separate declarations of a private property 'name'.(2322) p = u;
解説
private または protected な property が同じ名前で別々に定義されている2つのクラスの型は等価な型とみなされません。
なぜなら private や protected な property は interface として公開されません。
よって同じ property 名でも異なる意図で使用されているとみなされ Type Error となります。
採用情報
Legalscape では TypeScript を使用しています。以下に採用情報ページへのバナーがありますので TypeScript に詳しい方のエントリーをお待ちしております。