什么是“-”? TypeScript映射类型的语法含义?

时间:2018-08-08 18:03:08

标签: typescript

任何人都可以解释一下“-”吗?在以下TypeScript类型声明中 意味着,与仅使用“?”相比在那里?

type ValidationMap<T> = { [K in keyof T]-?: Validator<T[K]> }

1 个答案:

答案 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中引入的。)

希望有帮助。祝你好运!