TS接口中的可选和必需属性



这里有一个简单的typescript接口示例:

interface A: {
id: number;
email: string;
}
interface B extends A {
login: string;
password: string;
}

我想要的是:如果我从接口A创建一个对象,那么所有属性都是必需的。如果我创建B-来自A的"电子邮件"属性是可选的,则所有其他属性(B(都是必需的。有可能吗?

这是解决方案。您需要pick来自A:的电子邮件属性

Pick<A,"email">

并使其与PArtial 可选

interface B extends Partial<Pick<A,"email">>

完整代码和playgorung

interface A {
id: number;
email: string;
}
interface B extends Partial<Pick<A,"email">> {
login: string;
password: string;
}

最新更新