什么是-?在TypeScript中是什么意思?

时间:2018-09-20 03:24:18

标签: typescript

我在type definitions for prop-types中碰到了这一行:

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

如果没有-,这将是相当标准的部分mapped type,但我在文档中找不到任何涉及-?的地方。

任何人都可以解释-?的含义吗?

1 个答案:

答案 0 :(得分:13)

+-允许控制映射的类型修饰符(?readonly)。 -?表示必须全部存在,也可以删除可选性?),例如:

type T = {
    a: string
    b?: string
}


// Note b is optional
const sameAsT: { [K in keyof T]: string } = {
    a: 'asdf', // a is required
}

// Note a became optional
const canBeNotPresent: { [K in keyof T]?: string } = {
}

// Note b became required
const mustBePreset: { [K in keyof T]-?: string } = {
    a: 'asdf', 
    b: 'asdf'  // b became required 
}