我不要意思是 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
不同实用程序类型,但 Required
是 implemented with it (参见 library definition here )并且没有它就不可能存在。
令人遗憾的是,TypeScript 文档分散在手册、发行说明、常见问题解答、过时的规范和 GitHub 问题之间,没有明确的规范位置来查找任何特定内容。该语言的发展速度比文档还快。
好的,希望有帮助;祝你好运!
关于typescript - TypeScript 中的破折号问号语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61335051/