typescript - “-”是什么意思?TypeScript 映射类型中的语法含义?
问题描述
谁能解释一下那个“-”是什么?在以下 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
(请注意,如果您更改-?
为 just?
或 to +?
,则相反...您将添加可选修饰符。该?
符号是在 TypeScript 2.1 中作为映射类型功能的一部分添加的,而该+?
符号是在 TypeScript 2.8 中引入的与-?
。)
希望有帮助。祝你好运!