Node.js 如何强制typescript中变量的类型?
我正在尝试编写一些函数,将mongooseNode.js 如何强制typescript中变量的类型?,node.js,typescript,Node.js,Typescript,我正在尝试编写一些函数,将mongoose用户模型转换为带有要点的字符串: // Simplified version so you get the idea interface IUser { name: string } function userDetails (user: IUser, keys: string[]): string { return keys.map((k: string): string => { return `- ${k} : ${user
用户
模型转换为带有要点的字符串:
// Simplified version so you get the idea
interface IUser {
name: string
}
function userDetails (user: IUser, keys: string[]): string {
return keys.map((k: string): string => {
return `- ${k} : ${user[k]}`
})
.join('\n')
}
但我遇到了一个奇怪的编译器错误,user[k]
下面加了下划线:
对象类型的索引签名隐式具有“any”类型
有没有一种方法可以将typescript“强制”给管理员,使user[k]
是一个字符串?
我尝试了user[k]作为字符串
或user[k]
,但没有成功
另外,如果我从返回的字符串中删除${user[k]}
,那么编译器将停止抱怨
从编译器错误中可以看出,一切都在运行时工作
谢谢 试试这个:
function userDetails(user: IUser, keys: string[]): string {
let dic: { [prop: string]: string } = <any>user
return keys.map((k: string): string => {
return `- ${k} : ${dic[k]}`
})
.join('\n')
}
函数userDetails(用户:IUser,键:string[]):string{
让dic:{[prop:string]:string}=user
返回keys.map((k:string):string=>{
返回`-${k}:${dic[k]}`
})
.join(“\n”)
}
关于(用户)[k]
?哪个版本的TypeScript?你的例子很好用\非常感谢。如果你愿意,你可以把它写下来作为答案want@Paleo我使用的是带有noImplicitAny
标志的typescript 2。我怀疑猫鼬与此有关。我无法用一个简单的脚本重现这个bug……我从未使用过noImplicitAny
。也许这是一个限制。我会补充一个答案,即使我不确定,因为评论太少了。