Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在typescript中,`in`关键字做什么?_Typescript - Fatal编程技术网

在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; }