我正在写一个函数,传递给它的对象的键在钩子的返回类型中使用:
type MyOptions = {
[key: `${number}${'s'|'ms'}`]: string
}
function useMyHook<O extends MyOptions>(options: O): MyReturnType<O> {
// ...
}
当调用这个函数时,typescript不会抱怨无效的键:
useMyHook({
foo: 'bar'
})
如果我这样定义选项
const options: MyOptions = {
foo: 'bar'
}
TypeScript将按预期突出显示无效键。
如何确保对函数参数进行正确的类型检查?
TSPlayground与代码
2条答案
按热度按时间7ajki6be1#
你可以检查
O
的键是否可以分配给MyOptions
的键。如果可以,你给予options
类型O
。如果不可以,你可以使用MyOptions
来触发额外的属性检查,就像你一直在写options: MyOptions
一样。这将产生相同的错误:
同时仍然允许匹配
MyOptions
的对象:Playground
oxcyiej72#
你在找这样的东西吗?
TSPlayground