这是因为
我有一个具有必需属性的TypeScript接口。
但是,当键入一个对象并将其推入数组时,不会有错误消息提醒我缺少一些必需的属性。
下面是我代码中的一个示例:
interface Keyword {
keyword: string;
language: string;
location: string;
searchEngineDomain: string;
organicPositionLastThirtyDays: number[];
createdAt: string;
}
const keywords = [];
keywords.push({
keyword: 'My First Keyword',
} as Keyword);
我本以为会看到一个错误,告诉我要推入数组的对象缺少五个必需的属性。但我看不出有任何错误。
为什么会发生这种情况?
keywords
的类型是any[]
,而它应该是Keyword[]
。您还应该删除CCD_ 4,因为它有点像";相信我,这就是我们在这里想要的一切;。类型断言可以隐藏类型错误。
查看以下片段:
interface Keyword {
keyword: string;
language: string;
location: string;
searchEngineDomain: string;
organicPositionLastThirtyDays: number[];
createdAt: string;
}
const keywords: Keyword[] = [];
keywords.push({
keyword: 'My First Keyword',
});
您将收到以下错误:
类型为"{keyword:string;}"的参数不可分配给参数类型为"Keyword"。类型"{keyword:string;}"缺少类型"Keyword"中的以下属性:语言、位置、,searchEngineDomain,organicPositionLastThirtyDays,在创建