我正在寻找这样的对象:
const example = {
'meow': [],
'woof': [],
'quack': [],
'all': ['meow', 'woof', 'quack'],
'meowWoof': ['meow', 'woof'],
}
以上将是有效的。您会看到它是元的,因为值必须是数组,而值是对象本身的键。
但这不是因为DOGS
不是密钥。
const example = {
'meow': [],
'woof': [],
'quack': [],
'all': ['meow', 'DOGS', 'quack'],
'meowWoof': ['meow', 'woof'],
}
我可以将此对象包装在函数中以使输入正常工作。
这可能吗?
答案 0 :(得分:1)
我会使用像这样的通用辅助函数:
const asExample = <T extends Record<keyof T, Array<keyof T>>>(t: T) => t;
它表现出您想要的样子:
const example = asExample({
'meow': [],
'woof': [],
'quack': [],
'all': ['meow', 'woof', 'quack'],
'meowWoof': ['meow', 'woof'],
}); // okay
const badExample = asExample({
'meow': [],
'woof': [],
'quack': [],
'all': ['meow', 'DOGS', 'quack'], // error here
'meowWoof': ['meow', 'woof'],
});
希望有帮助。祝你好运!