1

我有一个自定义的树状类 ( MyTree),它将数据存储在分层键下(类似于文件系统路径)。它公开了方法getset,每个方法都对 -"."分隔的键进行操作。实例化时MyTree会给出一个模式,该模式指定每个键的类型(就本问题而言,考虑存储为的所有值的类型Nilable):每个定义的键:

t = MyTree.new({
  a: {
    b: { type: String },
    c: { type: Integer },
  },
  d: { type: Hash },
})

t.set('a.b', 'bar')
t.get('a.b')  # => 'bar'

我正在尝试用 来增加这个类sorbet,以便它可以像这样工作:

# Sorbet type error (vaulue under a.b should be a `String`)
t.set('a.b', 3)

# Sorbet method error (`#length` doesn't exist on `Integer`)
t.set('a.c', 1)
x = t.get('a.c')
x.length

但我不确定如何使给定MyTree实例的架构对冰糕清晰可见。这可能吗?

4

0 回答 0