Closed3

denoのassertEqualsでclassを比較、strict privateにするとプロパティが比較されてない

h64m1h64m1
a.ts
class A {
  #prop: string
  get prop {
    return this.#prop
  }
}

みたいな感じにして、

a_test.ts
Deno.test("a test", () => {
  assertEquals(new A("hello"), new A("world"))
})

がこけると思ったら、テストをパスしている。

h64m1h64m1

どうもstrict privateなプロパティが外から見えてない?(だからstrict privateなのかも)

console.log(new A("hello"))
// A { }

なので、一つ前の比較はプロパティのhelloとworldを比較できていなくて、空のAオブジェクト同士の比較になっていてパスしているよう。

privateにしたり、publicにすると見える

a.ts
class A {
  private prop: string
}
console.log(new A("hello"))
// A { prop: "hello" }
h64m1h64m1

nodeで試しても同じ。
strict privateなプロパティを使った場合、assertEqualsで比較できない?
とりあえずprivateにしておくか

このスクラップは2021/04/07にクローズされました