任何人都可以解释一下“-”吗?在以下TypeScript类型声明中 意味着,与仅使用“?”相比在那里?
type ValidationMap<T> = { [K in keyof T]-?: Validator<T[K]> }
答案 0 :(得分:5)
这不是通配符。 -?
符号是在TypeScript 2.8中添加的,是从映射类型中使用removing the optional modifier的一种方式。
基本上,这意味着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
属性。
(请注意,如果将-?
更改为?
或更改为+?
,情况将相反...您将添加可选修饰符。?
符号是mapped types功能的一部分,是在TypeScript 2.1中添加的,而+?
符号是与-?
一起在TypeScript 2.8中引入的。)
希望有帮助。祝你好运!