typescript - TypeScript 中的破折号问号语法是什么?

标签 typescript syntax optional

不要意思是 question mark syntax ,相反,我问的是 -?例如:

type Required<T> =
  T extends object
    ? { [P in keyof T]-?: NonNullable<T[P]>; } // <---------- "-?" here
    : T;

通过 this 2018 GitHub comment .我在 TypeScript 手册的 advanced types 章节中找不到这种语法。也不是 utility types .
-?如上仍然在 TypeScript 3.8 中编译,并且似乎与 ? 相反,即制作所需的 key ?是否相当于 Required ?如果不是,这个语法叫什么,我在哪里可以阅读更多关于它的信息?

最佳答案

您基本上是对的:它删除了 optional 属性修饰符 ?来自 mapped type .它作为 improvements to control over mapped type modifiers (see this link for the docs you want) 的一部分在 TypeScript 2.8 中引入.它与 Required 不同实用程序类型,但 Requiredimplemented with it (参见 library definition here )并且没有它就不可能存在。

令人遗憾的是,TypeScript 文档分散在手册、发行说明、常见问题解答、过时的规范和 GitHub 问题之间,没有明确的规范位置来查找任何特定内容。该语言的发展速度比文档还快。

好的,希望有帮助;祝你好运!

关于typescript - TypeScript 中的破折号问号语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61335051/

相关文章:

javascript - JavaScript 构造 `{}` 和 `call()` 是什么?

c - 如何将函数和变量参数列表传递给 C 中的另一个函数?

twig:仅当变量存在时才显示变量

json - 2 oneOf 在 json 模式 : 1 required 1 optional

javascript - TSLint在javascript文件上

Typescript 1.5,导入 ES6 模块

java - 创建 Java 泛型类时,尖括号中的波浪号是什么意思?

FORTRAN 95 : OPTIONAL statement does not work (using FTN95 and Plato)

Angular 7 : Injected service is undefined

javascript - 将 Angular 4 升级到 Angular 5,安装包失败