[英]What does the “-?” syntax mean in TypeScript mapped types?
任何人都可以解释一下“ - ?” 在下面的TypeScript类型声明意味着,与仅使用“?”相比 那里?
type ValidationMap<T> = { [K in keyof T]-?: Validator<T[K]> }
这不是通配符。 -?
在TypeScript 2.8中添加了表示法,作为从映射类型中删除可选修饰符的一种方法。
基本上,这意味着ValidationMap<T>
具有与T
相同的键,但ValidationMap<T>
任何属性都不是可选的,即使T
的相应属性是。 例如:
type Example = ValidationMap<{a: string, b?: number | undefined}>;
// type Example = {a: Validator<string>, b: Validator<number | undefined>}
这里, Example
具有必需的b
属性,即使它映射的类型具有可选的b
属性。
(注意,如果你改变-?
只是?
或者+?
它就会相反......你会添加可选的修饰符。 ?
作为映射类型功能的一部分,在TypeScript 2.1中添加了?
符号,而+?
符号是在TypeScript 2.8中引入的-?
。)
希望有所帮助。 祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.