gpt4 book ai didi

TypeScript 编译器允许调用不存在的 getter。这是编译器中的错误吗?

转载 作者:行者123 更新时间:2023-12-03 23:04:25 25 4
gpt4 key购买 nike

简而言之,我很困惑为什么这段代码编译没有错误:

class Foobar {
#data = 0
set data(val: number) { this.#data = val }
// (Notice there is no getter for "data")
}
let foobar = new Foobar()
// Call the setter for data, no problemo
foobar.data = 123
// Call the getter for data, compiler should not allow this imo
console.log(foobar.data) // Prints "undefined"
  • 这是 typescript 编译器中的错误吗?我找不到任何提到这个问题的地方。或者我的示例是否按预期工作(我错过了什么?)。
  • 有什么方法(使用 eslint 规则或 tsc)来捕获这个错误代码?
  • 最佳答案

    有一个related but not exactly the same issue in TypeScript github repo答案是这是定义的 ES6 类行为。
    有一个linter rule检查您是否有没有 getter 的 setter 或没有 getter 的 setter。
    我不知道是否有任何规则可以检查调用不存在的 getter。但是你可以定义一个抛出错误的 getter,所以至少在运行时你会看到错误并且单元测试会失败。

    关于TypeScript 编译器允许调用不存在的 getter。这是编译器中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63518504/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com