Javascript 如何使用TypeScript接口检查这三个值的类型?
以下代码经常中断,因为标签、说明和详细信息的类型错误 因此,我想确保他们得到了正确的论据: 标签应该是字符串 说明应为字符串或字符串数组 详细信息应为字符串 这是我第一次使用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(" ",
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=>{…}