在typescript中,`in`关键字做什么?
我知道如何使用它,但在文档中找不到任何解释。我想要一个准确的定义,以便我能更好地理解它在typescript中,`in`关键字做什么?,typescript,Typescript,我知道如何使用它,但在文档中找不到任何解释。我想要一个准确的定义,以便我能更好地理解它 编辑:我指的是映射类型中使用的,而不是js操作符。这是中的标准。您可以阅读更多的文档,但简短的故事是 如果指定的属性位于指定的对象中,in运算符将返回true。语法是: propNameOrNumber in objectName 其中,propNameOrNumber是表示属性名称或数组索引的字符串或数字表达式,objectName是对象的名称 在Typescript中,中的操作符还充当所述的类型保护
编辑:我指的是映射类型中使用的
,而不是js操作符。这是中的标准。您可以阅读更多的文档,但简短的故事是
如果指定的属性位于指定的对象中,in运算符将返回true。语法是:
propNameOrNumber in objectName
其中,propNameOrNumber
是表示属性名称或数组索引的字符串或数字表达式,objectName
是对象的名称
在Typescript中,
中的操作符还充当所述的类型保护
编辑
typescript中
中的的另一种含义是在映射类型定义中。您可以在或中阅读有关它们的信息。
中的关键字作为语法的一部分用于迭代键联合中的所有项
interface Person {
name: string;
age: number;
}
type Partial<T> = {
[P in keyof T]?: T[P]; // P will be each key of T
}
type PersonPartial = Partial<Person>; // same as { name?: string; age?: number; }
接口人{
名称:字符串;
年龄:人数;
}
类型部分={
[P in keyof T]?:T[P];//P将是T的每个键
}
类型PersonPartial=Partial;//与{name?:string;age?:number;}相同
OP可能指的是。这个问题不够具体。@estus是的,你可能是对的。。我没有立刻想到这件事。OP应该通过一个代码示例来阐明。你介意我把这个备选答案添加到我的答案中,还是你想提供你自己的备选答案?是的,请将它添加到答案中以保持一致性。我真的不记得它是什么时候推出的。Typescript特定功能的文档记录不一致,因为所谓的“文档记录”基本上是一个指南。@jddxf我在
@weakish中添加了的替代用法是的,编译器在那里做了一点手脚,并为这些功能创建了一个索引签名。从概念上讲,您可以将string
视为所有可能的字符串文字类型的并集(因此基本上是一个无限并集),因此在这种极限情况下,解释仍然成立。(与编号相同,它是所有可能的数字文字类型的并集)
interface Person {
name: string;
age: number;
}
type Partial<T> = {
[P in keyof T]?: T[P]; // P will be each key of T
}
type PersonPartial = Partial<Person>; // same as { name?: string; age?: number; }