typescript - 如何为定义的接口赋值?
问题描述
我已经为我试图为客户端构建的响应定义了接口我看到data
来自后端的响应,所以现在我试图为我的接口对象分配值,它即将到来未定义。不知道为什么会出现这个问题?
main.ts
private async specialtyAccountBalanceResponse(@Body()data: IAccountBalanceSdkResult): Promise<any> {
const saveDetails = {} as ICacheRequest;
const specialtyResponse = {} as IGetAccountBalanceResponse;
if (!data.Details && data.Header.StatusCode !== "0000") {
return data.Header;
}
specialtyResponse.details.lineOfBusiness = "SPec";
specialtyResponse.details.balanceAccount = data.Details.balanceAccount;
return specialtyResponse;
}
接口.ts
export interface IGetAccountBalanceResponse {
header: any;
details: IGetAccountBalanceDetails;
}
export interface IGetAccountBalanceDetails {
lineOfBusiness: string;
balanceAccount: string;
payment: IPaymentIndicator;
}
export interface IPaymentIndicator {
recentPaymentIndicator: string;
recentPaymentAmount: string;
achAuthRequiredInd: string;
}
解决方案
在您的示例中,您创建了一个空对象:
const specialtyResponse = {} as IGetAccountBalanceResponse;
然后你尝试访问它的属性:
specialtyResponse.details.lineOfBusiness = "SPec";
details
永远不会被实例化,所以它是undefined
. 因此您无法访问它的属性lineOfBusiness
。
一种解决方案是使用@undefinedMayNotBeNull 建议的类。另一种方法是specialtyResponse.details
在访问属性之前进行设置。
specialtyResponse.details = {} as IGetAccountBalanceDetails;
这是一个工作示例:
interface IGetAccountBalanceResponse {
details: IGetAccountBalanceDetails;
}
interface IGetAccountBalanceDetails {
lineOfBusiness: string;
balanceAccount: string;
}
const specialtyResponse = {} as IGetAccountBalanceResponse;
specialtyResponse.details = {} as IGetAccountBalanceDetails;
specialtyResponse.details.lineOfBusiness = "SPec";
specialtyResponse.details.balanceAccount = "Test";
更新
specialtyResponse
可能是错字。你的意思是specialityResponse
相反?
推荐阅读
- c++ - 当我在 openmp 循环中调用 C++ 类方法时出现奇怪的结果
- netlogo - 将变量分配给代理时,如何从列表中抽样而不进行替换?
- python-3.x - 如何获取数组中特定数字的索引?
- javascript - 未捕获的类型错误:data.map 不是 reactjs 虚拟组件上的函数
- python - python argparse:强制参数序列
- css - 如何从引导导航栏中的下拉选项卡中删除边框
- wordpress - 有人知道时髦地图插件的文本域或独特类吗?
- javascript - 尝试设置前端时收到以下语法错误
- excel - 如何根据第一个和最后一个文件名将100个文件复制到一个文件夹并在列表框vba中显示
- ngxs - 刷新浏览器选项卡后保留状态