Typescript 当在一种情况下需要可选属性,但在另一种情况下不需要时,如何优化接口对象的使用?
我有以下界面:Typescript 当在一种情况下需要可选属性,但在另一种情况下不需要时,如何优化接口对象的使用?,typescript,design-patterns,types,interface,dry,Typescript,Design Patterns,Types,Interface,Dry,我有以下界面: interface IUserInfo { name: string, surname: string, dateOfBirth: Date } 在我的应用程序的某些地方,我需要确保开发者为函数提供了一个包含所有属性的IUserInfo对象: const someFunc = (state: IUserInfo) => { // I want to get an error if developer tries to pass an obj
interface IUserInfo {
name: string,
surname: string,
dateOfBirth: Date
}
在我的应用程序的某些地方,我需要确保开发者为函数提供了一个包含所有属性的IUserInfo对象:
const someFunc = (state: IUserInfo) => {
// I want to get an error if developer tries to pass an object without name, surname or dateOfBirth
}
在其他情况下,我需要有可能传递相同类型的对象,但具有可选属性,因此用户应该能够传递名称/姓氏/出生日期的任意组合,或者什么都不传递
最简单的方法就是实现两个接口,一个具有所需属性,另一个没有属性。但我觉得有更好的方法可以做到这一点,不要重复你自己
如何以最佳方式实现我的需求?如果您只需要将所有字段标记为可选字段,您可以使用内置的
Partial
类型,如下所示:
类型IPartialUserInfo=Partial;
//现在输入IUserInfo={
//名称?:字符串|未定义;
//姓氏?:字符串|未定义;
//出生日期?:日期|未定义;
// }
你可以试试看