Typescript 中的 '-?:' 字符的作用

778 阅读1分钟
// # typescript/lib/lib.es5.d.ts

/**
 * Make all properties in T required
 */
type Required<T> = {
    [P in keyof T]-?: T[P];
};

typescript 标准库中有如上一段代码,作用是将 T 中所有的属性都变成必需的属性。

'-?:' 字符语法的作用就是这样,标记映射类型的属性为必需。它只能在映射类型中使用,在其他类型中使用会报错,上面的 Required<T> 就是一个映射类型

正常的 interface 接口中,如果属性不使用可选属性,就表示该属性必需了