在TypeScript中,一些类型使用
我了解到
extends keyof
或in keyof
进行定义。我试图理解它们的含义,但到目前为止我还没有成功。我了解到
keyof
单独返回一个联合类型,其中包含所有可能的名称作为值,这些名称存在于keyof
之后指定的类型的属性名称上。type T = keyof string;
T
即等同于 startsWith | endsWith | trim | substring | ...
。
这个表述正确吗?
现在,如果我试着思考 extends keyof
和 in keyof
的含义,我的直觉告诉我以下内容:
extends keyof
是任何从T
派生出来的类型,即它具有所有这些可能的值,但也可能更多。in keyof
是任何取值自T
的类型,但不一定是所有的值(也可能是部分值)。
所以,从这个角度来看,extends keyof
将描述一个 >=
关系,in keyof
将描述一个 <=
关系。这个表述是否正确?如果不正确,应该如何修正?
extends
始终用于泛型,而in
始终用于索引访问器? - Junle LiA extends B
的意思是 "某个A
是B
的子类型"。如果B
是一个键类型,则A
是集合中的一个字符串,由于索引访问类型,类型检查器可以更多地了解使用此字符串的代码。 - Ben Greenman