在TypeScript中,我知道如何声明多个键-值对对象
{ [key: string]: any }
如何声明单个键值对?
我希望支持的特定用例是一个prop,它可以是string
数组,也可以是单个密钥对对象。
例如:
const searchArray = [
'name',
{stats: 'resolution'},
'uptime',
{config: 'interface'},
];
一开始我以为解决办法很简单Record<string,string>
所以searchArray
的最终声明是
interface Props {
(...)
searchArray: (string | Record<string,string>)[],
}
但是我希望它拒绝这个,因为我在一个对象中发送了两个密钥对,但是它接受了。
searchArray={[
'name',
'bitrate',
{stats:'resolution', stats:'frameRate'}
]}
每个对象只接受一个密钥对。
searchArray={[
'name',
'bitrate',
{stats:'resolution'},
{stats:'frameRate'}
]}
谢谢你!
1条答案
按热度按时间wqsoz72f1#
AFAIK没有办法将
string
索引类型限制为只有一个属性条目,但这里有两个替代建议:1.使用元组:
TSPlayground
1.或者-稍微详细一点(但可能更清楚,取决于您的观点)-使用具有
key
和value
属性的对象类型:TSPlayground
另请参阅:TS手册中的泛型