Если вы заранее знаете возможные свойства, вы можете создать интерфейс с ними. Любые необязательные свойства можно использовать ?
.
interface MyRequest {
header: {
consumingAppId: string,
userTypeCd: string,
instanceId: string,
},
userInfo: {
firstName: string,
lastName: string,
nickName?: string, // example of an optional property on the userInfo object
},
metadata?: { // this entire metadata object can be left off
id: number; // but if metadata exists, it must have an id
price?: number;
}
}
const request: MyRequest = {
header: {
consumingAppId: "USER",
userTypeCd : "S",
instanceId : "QA",
},
userInfo: {
firstName: "John",
lastName: "Doe"
}
}
request.userInfo.nickName = 'scar face'; // legal
request.userInfo.favoriteColor = 'blue'; // illegal, because there's no favoriteColor in the type
Для получения дополнительной информации см. документацию по дополнительным свойствам .