export interface AWSTags {
CreatedBy: string;
Environment: EnvironmentMap;
Name: string;
OwnedBy: string;
Platform: string;
Product: string;
Runbook: string;
Service: string;
}
其他一些文件使用此方法返回与接口匹配的对象。
export const getAWSTags = (stackName: string, environment: EnvironmentMap, createdBy: string): AWSTags => ({
CreatedBy: createdBy,
Environment: environment,
Name: stackName,
OwnedBy: "owner",
Platform: "platform",
Product: "product",
Runbook: "url",
Service: `${stackName}-service`,
});
对于上下文,EnvironmentMap是返回三个字符串之一的类型。
当我试图将返回值赋给AWS标记时,它期望以下类型,它返回2322。
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
解决这个问题有哪些不同的方法或替代方案?
- EDIT**:这似乎删除了错误,但不确定有效性如何。
export interface AWSTags {
[key: string]: string;
CreatedBy: string;
Environment: EnvironmentMap;
Name: string;
OwnedBy: string;
Platform: string;
Product: string;
Runbook: string;
Service: string;
}
谢谢
1条答案
按热度按时间46scxncf1#
问题在于,尽管最后的JS是相同的,但从概念上讲,您将对象示例传递给了期待PoJo的对象。
基本上,就是这样:
在TS中声明您有一个示例与此声明匹配,但这并不意味着您的对象将 * 仅 * 由这些值组成。
为了解决这个问题,你需要从使用接口改为仅仅使用类型:
或者,如果希望保留接口,可以在将结果对象注入
tags
之前对其进行解构: