类型{[x:string]:any}是什么意思?

时间:2019-12-06 13:46:13

标签: typescript

我阅读了此article,但看不懂签名:

type FuncWithOneObjectArgument<P extends { [x: string]: any }, R> = (props: P) => R;

{ [x: string]: any}是什么意思?我以为这是一本具有any类型值和...键的字典。清单?弦? x是什么意思?我试图删除x,但它导致语法错误...如何读取类型?

1 个答案:

答案 0 :(得分:1)

它定义对象的键可以是什么。您的密钥只能是string类型。您的价值观可以是任何。

其背后的原因是,在打字稿中,您可以定义一个具有特定属性的对象:

type obj = {property1: string, property2: any};

这将创建必须同时具有两个属性的对象。

因此,没有直观的方法来定义键类型。 提示为什么我们使用方括号。

type obj = {[keys: string]: any};

对于像stringint这样的类型,它看起来毫无意义,但是您可以使用并集类型运算符定义键可以是什么:

type obj = {[keys in 'key1'|'key2'|'key3']: any};

此合成器表示您的密钥只能是key1key2key3