繁体   English   中英

Type语法-Typescript中此语法的含义是什么

[英]Type syntax - What's the meaning of this syntax in Typescript

我是Typescript的新手。 我不明白这种语法的含义; 有人可以向我解释吗?

type Type1<K> = K extends string ? { [P in K]: string } : never;

如果类型K扩展字符串,那么类型1将是字符串数组的文档吗? 就像是:

{"x": ["a", "b", "c"],
 "z": ["d", "e", "f"]
//etc
}
Or
{"x": "a",
    "z": "b"
//etc
}

首先来看一下{ [P in K]: string }这是一个映射类型。 如果K是字符串文字类型的并集(例如: 'a' | 'b' ),则此类型的结果将是一个以这些名称作为键的string类型的对象类型(所以{ a: string, b: string } )。 这实际上等效于预定义的Record类型。

K extends string ? ... : never K extends string ? ... : never不是分配条件类型 这意味着,如果K为联合类型,则将采用联合的每个成员并将其放入映射类型。 因此,例如:


type ex = Type1<'a' | 'b'> => 
    ('a' extends string ? { [P in 'a']: string } : never) | ('b' extends string ? { [P in 'b']: string } : never) =>
    ({ [P in 'a']: string }) | ({ [P in 'b']: string }) => 
    { a: string } | { b: string }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM