我有一个自定义的树状类 ( MyTree
),它将数据存储在分层键下(类似于文件系统路径)。它公开了方法get
和set
,每个方法都对 -"."
分隔的键进行操作。实例化时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
实例的架构对冰糕清晰可见。这可能吗?