为什么我的 TypeScript 界面没有提醒我它缺少某些属性?



我有一个具有必需属性的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,在创建

最新更新