typescript - "-?"语法在 TypeScript 映射类型中意味着什么?

标签 typescript

谁能解释一下那个“-?”是什么意思?在以下 TypeScript 类型声明中 意味着,与仅使用“?”相比在那里?

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

最佳答案

这不是通配符。 -? 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属性(property)。

(请注意,如果您将 -? 更改为仅 ?+?,它会变成相反的......您将添加可选修饰符。? 符号作为 mapped types 功能的一部分添加到 TypeScript 2.1 中,而 +? 符号是与 -? 一起在 TypeScript 2.8 中引入的。)

希望对您有所帮助。祝你好运!

关于typescript - "-?"语法在 TypeScript 映射类型中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753015/

相关文章:

angular - typescript 中的函数定义错误

javascript - 如何使用map()和find()方法搜索对象数组中的最小值?

javascript - 将数组传递给组件时出错(React - TypeScript)

typescript 发出的声明找不到全局接口(interface)的名称

带对象的 TypeScript 枚举

javascript - 在 Typescript Angular 中设置时间格式

angular - *ng用于显示数据但抛出 'undefined'错误

reactjs - 我可以将第三方库与 React 和 TypeScript 一起使用吗?

reactjs - react & 归还 - "Actions must be plain objects"

javascript - 我不能在我的数组中使用 .push 和 Angular 吗?无法读取未定义的属性 jsonArr