我想编写一个仅在按照我的定义传递时接受变量的函数。由于某种原因,我想我做错了,因为该函数仍然允许我传递任何JSON。参见下面的代码
type MetaObject = {
title: string;
meta_keywords: string,
meta_description: string,
og_title: string,
og_description: string,
image:string
}
我也尝试过
interface MetaObject {
title: string;
meta_keywords: string,
meta_description: string,
og_title: string,
og_description: string,
image:string
}
我的功能
setMetaData(data: MetaObject) {
}
运行功能
this.meta.setMetaData({whatever: 'sure'});
我看到如果我直接输入上面的内容,我的代码中实际上是
this.meta.setMetaData(response.body)
问题是response.body与MetaObject不匹配。我猜因为它是HTTPReponse,所以无法知道吗?
答案 0 :(得分:0)
您应将自己的成员设为optional
,并使用interface
。
interface MetaObject {
title?: string;
meta_keywords?: string;
meta_description?: string;
og_title?: string;
og_description?: string;
image?: string;
}
function setMetaData(data: MetaObject) {
}
setMetaData({title: 'sure'});
答案 1 :(得分:0)
签出这个很棒的库来进行TypeScript JSON类型验证。我已经在大型应用程序上专业地使用了它,这是一种乐趣。