在 TypeScript 中创建对象时忽略接口中的某些属性?
我有一个定义了某些属性的接口。我想从这个接口创建一个对象,但是在创建时我不想完全初始化接口中提到的所有属性。我只想初始化其中的几个。我该如何实现这一点?谢谢。
export interface Campaign {
id: string;
name: string;
createdOn: string;
lastUpdated: string;
createdBy: User;
type: CampaignType;
status: CampaignStatus;
startDate: string;
endDate: string;
budget: number;
description: string;
account: Account;
}
我想创建一个活动对象数组。这就是我正在尝试做的事情。
let campaigns: Campaign[] = [
{ id:"1",
name: "test campaign"
}
];
然而,我收到以下错误。
类型 '{ id: string; name: string; }' 缺少类型 'Campaign' 的以下属性:createdOn、lastUpdated、createdBy、type,以及另外 6 个.ts(2740)
答案#1
你可以使用部分 -
let campaigns: Partial<Campaign>[] = [
{ id:"1",
name: "test campaign"
}
];
答案#2
如果你将可选属性设为可空,它应该可以工作。
示例:
type User = {
firstName: string;
lastName?: string;
};
// We can assign a string to the "lastName" property
let john: User = { firstName: "John", lastName: "Doe" };
// ... or we can explicitly assign the value undefined
let jane: User = { firstName: "Jane", lastName: undefined };
// ... or we can not define the property at all
let jake: User = { firstName: "Jake" };
