打字稿功能变量类型检查

时间:2019-09-26 15:37:58

标签: typescript

我想编写一个仅在按照我的定义传递时接受变量的函数。由于某种原因,我想我做错了,因为该函数仍然允许我传递任何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,所以无法知道吗?

2 个答案:

答案 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类型验证。我已经在大型应用程序上专业地使用了它,这是一种乐趣。

https://github.com/mojotech/json-type-validation