[英]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.