Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用TypeScript接口检查这三个值的类型?_Javascript_Typescript_Types - Fatal编程技术网

Javascript 如何使用TypeScript接口检查这三个值的类型?

Javascript 如何使用TypeScript接口检查这三个值的类型?,javascript,typescript,types,Javascript,Typescript,Types,以下代码经常中断,因为标签、说明和详细信息的类型错误 因此,我想确保他们得到了正确的论据: 标签应该是字符串 说明应为字符串或字符串数组 详细信息应为字符串 这是我第一次使用TypeScript,所以我检查了文档。并包括一个界面: const quickPick = vscode.window.createQuickPick() const response = await fetch(`https://api.datamuse.com/words?ml=${text.replace(" ",

以下代码经常中断,因为标签、说明和详细信息的类型错误

因此,我想确保他们得到了正确的论据:

标签应该是字符串

说明应为字符串或字符串数组

详细信息应为字符串

这是我第一次使用TypeScript,所以我检查了文档。并包括一个界面:

const quickPick = vscode.window.createQuickPick()
const response = await fetch(`https://api.datamuse.com/words?ml=${text.replace(" ", "+")}`)
const data = await response.json() // [{"word": "close", "score": 123, "tags": ["n", "adj"]}

interface Item {
  label: string
  description: string[] || string
  detail: string
}

quickPick.items = data.map((item: Item) => {
  return {
    label: item.word,
    description: item.tags ? item.tags.join(', ') : 'no tags',
    detail: `Relevance: ${item.score.toString()}`
  }
})
然而,VisualStudio代码向我显示了一系列错误。所以我假设我的代码甚至不是正确的打字脚本代码

正确的做法是什么

更新:我尝试了下面的建议,但现在出现了以下错误:


正如@cartant在评论中提到的,您的声明是错误的,应该用|而不是||

接口项{ 标签:字符串; 说明:字符串[]|字符串; 细节:字符串; } 看起来地图的lambda定义也不正确。您将其定义为item:item=>{…},这意味着输入参数类型为item。但是,我猜您打算返回该类型,所以定义应该如下所示:item:item=>{…}

quickPick.items=data.mapitem:Item=>{ 标签:item.word, 描述:item.tags?item.tags.join',':“无标记”, 详细信息:`相关性:${item.score.toString}` }
我还将=>{return{…};}更改为=>{…},这只是编写此类表达式的一种更方便的方式。

你的意思是什么,所以我想确保它们被输入正确的参数:字符串、字符串或字符串数组、字符串。?字符串[]|string@alexchenco您还可以访问地图中项目的非引用属性,比如item.word。这些属性应该通过接口提供,还是仅仅是一个错误?这是一个错误。那么我应该做什么改变呢?我有点困惑,哈哈。或者我不应该在这里使用接口?@alexchenco对不起,看起来函数定义不正确,所以我误解了代码。我更新了答案,希望对你有所帮助。非常感谢!您的回答非常有用。@alexchenco我想这是因为没有定义数据数组项类型。如果没有相应的接口,可以将其隐式设置为any,如item:any:item=>{…}