TypeScript类可以具有可选属性和必需属性。
class SomeClass {
foo?: string;
bar?: string;
baz: string = '';
qux: string = '';
}
Partial<T>
映射类型可以使所有属性为可选。
type SomeClassPartial = Partial<SomeClass>;
问题是,我们可以采取相反的方式来制作所需的所有属性吗?
type SomeClassComplete = Complete<SomeClass>;
Partial
映射类型将?
添加到所有属性,从而使它们均为可选。我正在寻找一种从所有属性中删除?
的方法,从而使它们成为必需。
我们尝试使用!
运算符,但是它没有这种语义。
type Complete<T> = {
[P in keyof T]: T[P];
};
答案 0 :(得分:2)
找到了。 Required<T>
部分执行此操作。
定义为inside TypeScript/lib.es5.d.ts here。
/**
* Make all properties in T required
*/
type Required<T> = {
[P in keyof T]-?: T[P];
};