我阅读了此article,但看不懂签名:
type FuncWithOneObjectArgument<P extends { [x: string]: any }, R> = (props: P) => R;
{ [x: string]: any}
是什么意思?我以为这是一本具有any
类型值和...键的字典。清单?弦? x
是什么意思?我试图删除x
,但它导致语法错误...如何读取类型?
答案 0 :(得分:1)
它定义对象的键可以是什么。您的密钥只能是string
类型。您的价值观可以是任何。
其背后的原因是,在打字稿中,您可以定义一个具有特定属性的对象:
type obj = {property1: string, property2: any};
这将创建必须同时具有两个属性的对象。
因此,没有直观的方法来定义键类型。 提示为什么我们使用方括号。
type obj = {[keys: string]: any};
对于像string
和int
这样的类型,它看起来毫无意义,但是您可以使用并集类型运算符定义键可以是什么:
type obj = {[keys in 'key1'|'key2'|'key3']: any};
此合成器表示您的密钥只能是key1
,key2
或key3
。