TypeScriptは非パブリックなプロパティを持っていると公称型になる
code:typescript
class Foo {
constructor(readonly id: string) {}
}
class Bar {
constructor(readonly id: string) {}
}
// エラーにならない
const foo: Foo = new Bar('bar');
class PrivateFoo {
constructor(private readonly id: string) {}
}
class PrivateBar {
constructor(private readonly id: string) {}
}
// エラーになる
// Type 'PrivateBar' is not assignable to type 'PrivateFoo'.
// Types have separate declarations of a private property 'id'.(2322)
const privateFoo: PrivateFoo = new PrivateBar('bar');