rob*_*kuz 2 typescript mapped-types
我想反转具有唯一常量属性值的记录的属性名称和类型。
const VALUE = {
field1: "fieldA",
field2: "fieldB"
} as const
type Reversed = Reverser<typeof VALUE>
//which should yield the following type
type Reversed = {
fieldA: "field1";
fieldB: "field2";
}
Run Code Online (Sandbox Code Playgroud)
我认为这是不可能的,因为属性值不一定是唯一的。但我还是要问;-)
您可以将映射类型与as子句一起使用:
type Reverser<T extends Record<PropertyKey, PropertyKey>> = {
[P in keyof T as T[P]]: P
}
Run Code Online (Sandbox Code Playgroud)
该as子句将获取P密钥并将其映射到其他任何内容。P在本例中,我们将其映射到键( )处的属性类型T[P]。对于属性的值,我们只使用P作为类型。
| 归档时间: |
|
| 查看次数: |
853 次 |
| 最近记录: |